Saya punya meja
| base_schedule_line_items | CREATE TABLE
base_schedule_line_items(
idint (10) unsigned NOT NULL AUTO_INCREMENT,
installmentint (10) unsigned NOT NULL,
on_datetanggal NOT NULL,
actual_datetanggal DEFAULT NULL,
payment_typeint (11) NOT NULL,
scheduled_principal_outstandingdesimal (65,0) NOT NULL,
scheduled_principal_duedecimal (65,0) BUKAN NULL,
scheduled_interest_outstandingdesimal (65,0) BUKAN NULL,
scheduled_interest_duedesimal (65,0) BUKAN NULL,
currencyint (11) BUKAN NULL,
updated_atdatetime BUKAN NULL DEFAULT '2013-01-06 14:29:16',
created_atdatetime BUKAN 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), KEY ( ),
KEYindex_bslt_lending(lending_id),
KUNCIindex_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 DEFAULT CHARSET = utf8 |
Sekarang tabel ini memiliki 30 juta catatan di dalamnya, saya perlu menambahkan dua indeks lagi untuk ini dan sepertinya butuh bertahun-tahun untuk menambahkannya.
ubah tabel base_schedule_line_items tambahkan indeks index_bslt_sla (dijadwalkan_principal_due, actual_date, lending_id);
ubah tabel base_schedule_line_items tambahkan indeks index_bslt_ssla (dijadwalkan_principal_due, terjadwal_interest_due, lending_id, actual_date);
Saya menggunakan query yang disebutkan di bawah ini untuk mengetahui ukuran tabel
SELECT table_name AS "Tables", round ((((data_length + index_length) / 1024/1024), 2) "Ukuran dalam MB" FROM information_schema.TABLES WHERE table_schema = "my_database_name";
Hasilnya keluar sebagai
base_schedule_line_items | 20111.00
Saya menggunakan ini hanya untuk menghitung panjang data dan meninggalkan panjang indeks
SELECT table_name AS "Tables", round ((((data_length) / 1024/1024), 2) "Ukuran dalam MB" FROM information_schema.TABLES WHERE table_schema = "my_database_name";
dan hasilnya
base_schedule_line_items | 9497.00
Indeks
KEY index_bslt_actualdate (actual_date),
KEY index_bslt_spsila (loan_base_schedule_id, dijadwalkan_principal_due, terjadwal_interest_due, aktual_date),
KEY index_bslt_ondate (on_date),
KEY index_bslt_dapatditangguhkan, dengan _dapatkan_dapatdibandingkan dengan_data_data_Kunci_ditanggal, dengan
KEY index_bslt_document , KEY index_bslt_document , KEY index_bslt_date_date , KEY index_bslt_document, ke_pengaturan_dana_delanjakan_dua hari_dua hari,
KEY index_bslt_do
ditambahkan oleh saya, tetapi saya tidak yakin atau untuk apa indeks lain ditambahkan. Ini aplikasi yang cukup besar. Sekarang saya perlu menambahkan dua indeks yang disebutkan di atas karena mereka membantu saya mengekstraksi laporan menggunakan pernyataan pilih dan saya merasa sangat sulit untuk menambahkannya. Bantuan apa pun akan sangat dihargai