Mam stolik
| base_schedule_line_items | UTWÓRZ TABELĘ
base_schedule_line_items(
idint (10) unsigned NOT NULL AUTO_INCREMENT,
installmentint (10) unsigned NOT NULL,
on_datedata NOT NULL,
actual_datedata DEFAULT NULL,
payment_typeint (11) NOT NULL,
scheduled_principal_outstandingdziesiętny (65,0) NOT NULL,
scheduled_principal_duedziesiętny (65,0) NOT NULL,
scheduled_interest_outstandingdziesiętny (65,0) NOT NULL,
scheduled_interest_duedziesiętny (65,0) NOT NULL,
currencyint (11) NOT NULL,
updated_atdata / godzina NOT NULL DEFAULT '2013-01-06 14:29:16', data / godzina
created_atNOT NULL DEFAULT ' 2013-01-06 14:29:16 ',
loan_base_schedule_idint (10) unsigned NOT NULL,
lending_idint (10) unsigned NOT NULL,
rescheduletinyint (1) DEFAULT' 0 ',
PRIMARY KEY (id),
KEYindex_base_schedule_line_items_loan_base_schedule(loan_base_schedule_id), KEYindex_bslt_spd(scheduled_principal_due),
KLUCZindex_bslt_lending(lending_id)
KLUCZindex_bslt_actualdate(actual_date)
KLUCZindex_bslt_spsila(loan_base_schedule_id,scheduled_principal_due,scheduled_interest_due,actual_date)
KLUCZindex_bslt_ondate(on_date)
KLUCZindex_bslt_oa(on_date,actual_date)
KLUCZindex_bslt_ol(on_date,loan_base_schedule_id)
KLUCZindex_bslt_oli(on_date,lending_id)
) Silnik = InnoDB AUTO_INCREMENT = 30410126 Domyślnym zestawem = utf8 |
Teraz ta tabela zawiera 30 milionów rekordów, muszę dodać do tego jeszcze dwa indeksy i dodawanie go zajmuje lata.
zmień tabelę base_schedule_line_items dodaj indeks index_bslt_sla (zaplanowana_principal_due, faktyczna_data, lending_id);
zmień tabelę base_schedule_line_items dodaj indeks index_bslt_ssla (zaplanowana_principal_due, zaplanowana_interes_due, lending_id, faktyczna_data);
Użyłem poniższego zapytania, aby znaleźć rozmiar tabeli
WYBIERZ nazwę_tabeli AS „Tabele”, okrągłe (((długość_danych + długość_indeksu) / 1024/1024), 2) „Rozmiar w MB” OD schematu_informacyjnego.TABLES GDZIE tabela_schema = „moja_nazwa_bazy_danych”;
Wynik wyszedł jako
base_schedule_line_items | 20111,00
Użyłem tego tylko do obliczenia długości danych i pominąłem długość indeksu
WYBIERZ nazwę_tabeli AS „Tabele”, okrągłe (((długość_danych) / 1024/1024), 2) „Rozmiar w MB” OD schematu_informacyjnego.TABLES GDZIE schemat_tabeli = „moja_nazwa_bazy_danych”;
i wynik był
base_schedule_line_items | 9497,00
Indeksy
KLUCZ index_bslt_actualdate (actual_date)
index_bslt_spsila KLUCZ (loan_base_schedule_id, scheduled_principal_due, scheduled_interest_due, actual_date)
KLUCZ index_bslt_ondate (on_date)
KLUCZ index_bslt_oa (on_date, actual_date)
KLUCZ index_bslt_ol (on_date, loan_base_schedule_id)
KLUCZ index_bslt_oli (on_date, lending_id)
zostały dodane przeze mnie, ale nie jestem pewien, do jakiego celu zostały dodane inne wskaźniki. To dość duża aplikacja. Teraz muszę dodać te dwa wyżej wymienione wskaźniki, ponieważ pomagają mi one wyodrębnić raport przy użyciu instrukcji select i bardzo trudno jest je dodać. Każda pomoc byłaby bardzo mile widziana