Ich habe einen tisch
| base_schedule_line_items | CREATE TABLE
base_schedule_line_items
(
id
int (10) vorzeichenlos NICHT NULL AUTO_INCREMENT,
installment
int (10) vorzeichenlos NICHT NULL,
on_date
Datum NICHT NULL,
actual_date
Datum STANDARD NULL,
payment_type
int (11) NICHT NULL,
scheduled_principal_outstanding
dezimal (65,0) NICHT NULL,
scheduled_principal_due
dezimal (65,0) NICHT NULL,
scheduled_interest_outstanding
dezimal (65,0) NICHT NULL,
scheduled_interest_due
dezimal (65,0) NICHT NULL,
currency
int (11) NICHT NULL,
updated_at
Datum / Uhrzeit NICHT NULL STANDARD '2013-01-06 14:29:16',
created_at
Datum / Uhrzeit NICHT NULL STANDARD ' 2013-01-06 14:29:16 ',
loan_base_schedule_id
int (10) vorzeichenlos NICHT NULL,
lending_id
int (10) vorzeichenlos NICHT NULL,
reschedule
tinyint (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
quelle