ฉันมีโต๊ะ
| base_schedule_line_items | สร้างตาราง
base_schedule_line_items
(
id
int (10) unsigned NOT NULL AUTO_INCREMENT,
installment
int (10) unsigned NOT NULL,
on_date
วันที่ NOT NULL,
actual_date
วันที่ DEFAULT NULL,
payment_type
int (11) NOT NULL,
scheduled_principal_outstanding
ทศนิยม (65,0) NOT NULL,
scheduled_principal_due
ทศนิยม (65,0) ไม่เป็น NULL,
scheduled_interest_outstanding
ทศนิยม (65,0) ไม่เป็น NULL,
scheduled_interest_due
ทศนิยม (65,0) ไม่เป็น NULL,
currency
int (11) ไม่เป็น NULL, วันที่และเวลา
updated_at
ไม่เป็นค่าเริ่มต้น '2013-01-06 14:29:16',
created_at
datetime ไม่เป็นค่าเริ่มต้น ' 2013-01-06 14:29:16 ',
loan_base_schedule_id
int (10) ไม่ได้ลงนามไม่เป็นโมฆะ,
lending_id
int (10) ไม่ได้ลงนามไม่เป็นโมฆะ,
reschedule
จิ๋ว (1) เริ่มต้น' 0 ',
คีย์หลัก (id
),
คีย์หลักindex_base_schedule_line_items_loan_base_schedule
(loan_base_schedule_id
), KEYindex_bslt_spd
(scheduled_principal_due
),
KEYindex_bslt_lending
(lending_id
),
คีย์index_bslt_actualdate
(actual_date
),
คีย์index_bslt_spsila
(loan_base_schedule_id
,scheduled_principal_due
,scheduled_interest_due
,actual_date
),
คีย์index_bslt_ondate
(on_date
),
คีย์index_bslt_oa
(on_date
,actual_date
),
คีย์index_bslt_ol
(on_date
,loan_base_schedule_id
),
คีย์index_bslt_oli
(on_date
,lending_id
)
) ENGINE = InnoDB AUTO_INCREMENT = 30410126 เริ่มต้น charset = utf8 |
ตอนนี้ตารางนี้มีบันทึกอยู่ 30 ล้านรายการฉันต้องเพิ่มดัชนีอีกสองรายการลงในตารางนี้และเหมือนกับที่ใช้เวลาเพิ่มหลายปี
แก้ไขตาราง base_schedule_line_items เพิ่มดัชนี index_bslt_sla (sched_principal_due, real_date, ยืม_id);
แก้ไขตาราง base_schedule_line_items เพิ่มดัชนี index_bslt_ssla (sched_principal_due, sched_interest_due, ยืม_id, actual_date);
ฉันใช้แบบสอบถามที่กล่าวถึงด้านล่างเพื่อหาขนาดของตาราง
SELECT table_name เป็น "Tables", round (((data_length + index_length) / 1024/1024), 2) "Size เป็น MB" จาก information_schema.TABLES ที่ table_schema = "my_database_name";
ผลออกมาเป็น
base_schedule_line_items | 20,111.00
ฉันใช้สิ่งนี้เพื่อคำนวณความยาวข้อมูลและทิ้งความยาวดัชนี
SELECT table_name เป็น "Tables", round (((data_length) / 1024/1024), 2) "Size เป็น MB" จาก data_schema.TABLES ที่ table_schema = "my_database_name";
และผลลัพธ์ก็คือ
base_schedule_line_items | 9,497.00
ดัชนี
index_bslt_actualdate KEY (actual_date)
index_bslt_spsila KEY (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)
ถูกเพิ่มเข้ามาโดยฉัน แต่ฉันไม่ได้เป็น fsure หรือมีการเพิ่มดัชนีอื่น ๆ เพื่อวัตถุประสงค์ใด นี่เป็นแอปพลิเคชั่นที่ใหญ่พอสมควร ตอนนี้ฉันต้องเพิ่มดัชนีทั้งสองที่กล่าวถึงข้างต้นเนื่องจากพวกเขาช่วยฉันในการแยกรายงานโดยใช้คำสั่ง select และฉันพบว่ามันยากมากที่จะเพิ่มพวกเขา ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก