ฉันได้ตั้งค่าตารางของฉันด้วยดัชนีเฉพาะบน done_status (done_status = INT):
เมื่อฉันใช้:
EXPLAIN SELECT * FROM reminder WHERE done_status=2
ฉันได้รับมันกลับมา:
id select_type ชนิดของตารางที่เป็นไปได้คีย์คีย์ key_len แถวอ้างอิงพิเศษ 1 ตัวเตือนที่เรียบง่าย ALL done_status NULL NULL NULL 5 การใช้ตำแหน่ง
แต่เมื่อฉันออกคำสั่งนี้:
EXPLAIN SELECT * FROM reminder WHERE done_status=1
ฉันได้รับผลตอบแทนดังต่อไปนี้:
id select_type ชนิดของตารางที่เป็นไปได้คีย์คีย์ key_len แถวอ้างอิงพิเศษ 1 การแจ้งเตือนที่เรียบง่ายอ้างอิงจากเสร็จ _status done_status 4 const 2
มันEXPLAIN
แสดงให้ฉันเห็นว่ามันใช้ 5 แถวครั้งที่สอง 2 แถว
ฉันไม่คิดว่าจะใช้ดัชนีถ้าฉันเข้าใจถูกต้องในครั้งแรกควรให้ 3 แถว ฉันทำอะไรผิด
SHOW INDEX FROM reminder
:
ตาราง Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part ที่บรรจุ Null Index_type ความคิดเห็น Index_comment เตือนความจำ 1 done_status 1 done_status A 5 NULL NULL BTREE
อธิบายเพิ่มเติม:
id select_type ชนิดของตารางที่เป็นไปได้ key_keys คีย์แถวอ้างอิง ref กรองพิเศษ 1 ตัวเตือน SIMPLE ref done_status done_status 4 const 2 100.00
show warnings
ไม่แสดงความสนใจเลย