Ich habe einen tisch
| base_schedule_line_items | CREATE TABLE
base_schedule_line_items(
idint (10) vorzeichenlos NICHT NULL AUTO_INCREMENT,
installmentint (10) vorzeichenlos NICHT NULL,
on_dateDatum NICHT NULL,
actual_dateDatum STANDARD NULL,
payment_typeint (11) NICHT NULL,
scheduled_principal_outstandingdezimal (65,0) NICHT NULL,
scheduled_principal_duedezimal (65,0) NICHT NULL,
scheduled_interest_outstandingdezimal (65,0) NICHT NULL,
scheduled_interest_duedezimal (65,0) NICHT NULL,
currencyint (11) NICHT NULL,
updated_atDatum / Uhrzeit NICHT NULL STANDARD '2013-01-06 14:29:16',
created_atDatum / Uhrzeit NICHT NULL STANDARD ' 2013-01-06 14:29:16 ',
loan_base_schedule_idint (10) vorzeichenlos NICHT NULL,
lending_idint (10) vorzeichenlos NICHT NULL,
rescheduletinyint (1) STANDARD' 0 ',
PRIMARY KEY (id),
KEYindex_base_schedule_line_items_loan_base_schedule(loan_base_schedule_id), KEYindex_bslt_spd(scheduled_principal_due),
TASTEindex_bslt_lending(lending_id),
KEYindex_bslt_actualdate(actual_date),
KEYindex_bslt_spsila(loan_base_schedule_id,scheduled_principal_due,scheduled_interest_due,actual_date),
KEYindex_bslt_ondate(on_date),
KEYindex_bslt_oa(on_date,actual_date),
KEYindex_bslt_ol(on_date,loan_base_schedule_id),
KEYindex_bslt_oli(on_date,lending_id)
) ENGINE = InnoDB AUTO_INCREMENT = 30410126 STANDARD charset = UTF - 8 |
Jetzt hat diese Tabelle 30 Millionen Datensätze. Ich muss noch zwei weitere Indizes hinzufügen, und es dauert Jahre, um sie hinzuzufügen.
alter table base_schedule_line_items add index index_bslt_sla (Scheduled_Principal_Due, Actual_date, Lending_id);
alter table base_schedule_line_items add index index_bslt_ssla (Scheduled_Principal_Due, Scheduled_ Interest_Due, Lending_id, Actual_Date);
Ich habe die unten angegebene Abfrage verwendet, um die Größe der Tabelle zu ermitteln
SELECT table_name AS "Tables", round (((data_length + index_length) / 1024/1024), 2) "Size in MB" FROM information_schema.TABLES WHERE table_schema = "my_database_name";
Das Ergebnis kam als
base_schedule_line_items | 20111.00
Ich habe dies nur verwendet, um die Datenlänge zu berechnen und die Indexlänge wegzulassen
SELECT table_name AS "Tables", round (((data_length) / 1024/1024), 2) "Size in MB" FROM information_schema.TABLES WHERE table_schema = "my_database_name";
und Ergebnis war
base_schedule_line_items | 9497,00
Die Indizes
KEY index_bslt_actualdate (actual_date),
KEY index_bslt_spsila (loan_base_schedule_id, Scheduled_principal_due, Scheduled_interest_due, actual_date),
KEY index_bslt_ondate (on_date),
KEY index_bslt_oa (on_date, actual_date),
loaned_loled
index_oa (on_oa
wurden von mir hinzugefügt, aber ich bin nicht sicher oder zu welchem Zweck andere Indizes hinzugefügt wurden. Dies ist eine ziemlich große Anwendung. Jetzt muss ich diese beiden oben genannten Indizes hinzufügen, da sie mir beim Extrahieren eines Berichts mit einer select-Anweisung helfen und ich es sehr schwierig finde, sie hinzuzufügen. Jede Hilfe wäre sehr dankbar