Ho un tavolo
| base_schedule_line_items | CREATE TABLE
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_outstandingdecimale (65,0) NOT NULL,
scheduled_principal_duedecimale (65,0) NOT NULL,
scheduled_interest_outstandingdecimale (65,0) NOT NULL,
scheduled_interest_duedecimale (65,0) NOT NULL,
currencyint (11) NOT NULL,
updated_atdatetime NOT NULL DEFAULT '2013-01-06 14:29:16',
created_atdatetime NOT NULL DEFAULT ' 06/01/2013 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),
KEYindex_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 = 30.410.126 DI DEFAULT CHARSET = utf8 |
Ora questa tabella contiene 30 milioni di record, devo aggiungere altri due indici a questo ed è come se ci volessero anni per aggiungerlo.
alter table base_schedule_line_items aggiungi index index_bslt_sla (schedule_principal_due, actual_date, lending_id);
alter table base_schedule_line_items aggiungi index index_bslt_ssla (schedule_principal_due, pianificato_interesse_due, lending_id, actual_date);
Ho usato la query sotto menzionata per scoprire la dimensione della tabella
SELEZIONA table_name AS "Tabelle", rotondo (((data_length + index_length) / 1024/1024), 2) "Dimensione in MB" DA information_schema.TABLES DOVE table_schema = "my_database_name";
Il risultato è emerso come
base_schedule_line_items | 20.111,00
L'ho usato solo per calcolare la lunghezza dei dati e tralasciare la lunghezza dell'indice
SELEZIONA table_name AS "Tabelle", rotondo (((data_length) / 1024/1024), 2) "Dimensione in MB" DA information_schema.TABLES DOVE table_schema = "my_database_name";
e il risultato è stato
base_schedule_line_items | 9.497,00
Gli indici
Index_bslt_actualdate KEY (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),
KEY index_bslt_ol (on_date, loan_base_schedule_id),
KEY index_bslt_oli (on_date, lending_id)
sono stati aggiunti da me, ma non sono sicuro o per quale scopo siano stati aggiunti altri indici. Questa è un'applicazione abbastanza grande. Ora devo aggiungere quei due indici sopra menzionati perché mi aiutano a estrarre un rapporto usando un'istruzione select e trovo molto difficile aggiungerli. Qualsiasi aiuto sarebbe molto apprezzato