Ho un tavolo
| base_schedule_line_items | CREATE TABLE
base_schedule_line_items
(
id
int (10) unsigned NOT NULL AUTO_INCREMENT,
installment
int (10) unsigned NOT NULL,
on_date
data NOT NULL,
actual_date
data DEFAULT NULL,
payment_type
int (11) NOT NULL,
scheduled_principal_outstanding
decimale (65,0) NOT NULL,
scheduled_principal_due
decimale (65,0) NOT NULL,
scheduled_interest_outstanding
decimale (65,0) NOT NULL,
scheduled_interest_due
decimale (65,0) NOT NULL,
currency
int (11) NOT NULL,
updated_at
datetime NOT NULL DEFAULT '2013-01-06 14:29:16',
created_at
datetime NOT NULL DEFAULT ' 06/01/2013 14:29:16 ',
loan_base_schedule_id
int (10) unsigned NOT NULL,
lending_id
int (10) unsigned NOT NULL,
reschedule
tinyint (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