สามตาราง:
product
: กับคอลัมน์: ( a, g, ...a_lot_more... )
a: PK, clustered
g: bit-column
main
: กับคอลัมน์: ( c, f, a, b, ...a_lot_more... )
c: PK, clustered
f: bit-column
(a, b): UQ
lookup
กับคอลัมน์: ( a, b, c, i )
(a, b): PK, clustered
a: FK to product(a)
c: UQ, FK to main(c)
i: bit-column
ฉันไม่พบดัชนีที่ดีสำหรับการเข้าร่วม:
FROM
product
JOIN
lookup
ON lookup.a = product.a
JOIN
main
ON main.c = lookup.c
WHERE
product.g = 1
AND
main.f = 1
AND
lookup.i = 1
AND lookup.b = 17
ฉันลองใช้ดัชนีครอบคลุมproduct (g, a, ...)
และใช้ แต่ไม่ได้ผลลัพธ์ที่น่าประทับใจ
การรวมกันของดัชนีบางอย่างบนlookup
ตารางสร้างแผนการดำเนินการด้วยการผสานดัชนีโดยมีประสิทธิภาพเพิ่มขึ้นเล็กน้อยจากแผนก่อนหน้านี้
มีชุดค่าผสมที่ชัดเจนที่ฉันขาดหายไปหรือไม่
การออกแบบโครงสร้างใหม่อาจช่วยได้หรือไม่
DBMS คือ MySQL 5.5 และตารางทั้งหมดใช้ InnoDB
ขนาดโต๊ะ:
product: 67K , g applied: 64K
main: 420K , f applied: 190K
lookup: 12M , b,i applied: 67K