Ba bảng:
product
: với các cột: ( a, g, ...a_lot_more... )
a: PK, clustered
g: bit-column
main
: với các cột: ( c, f, a, b, ...a_lot_more... )
c: PK, clustered
f: bit-column
(a, b): UQ
lookup
với các cột: ( a, b, c, i )
(a, b): PK, clustered
a: FK to product(a)
c: UQ, FK to main(c)
i: bit-column
Tôi không thể tìm thấy các chỉ mục tốt cho việc tham gia:
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
Tôi đã thử một chỉ số bao gồm product (g, a, ...)
và nó được sử dụng nhưng không có kết quả ngoạn mục.
Một số kết hợp các chỉ mục trên lookup
bảng tạo ra các kế hoạch thực hiện với hợp nhất chỉ mục, với mức tăng hiệu quả nhẹ so với kế hoạch trước đó.
Có một số kết hợp rõ ràng mà tôi đang thiếu?
Một thiết kế lại của cấu trúc có thể giúp đỡ?
DBMS là MySQL 5.5 và tất cả các bảng đang sử dụng InnoDB.
Kích thước bảng:
product: 67K , g applied: 64K
main: 420K , f applied: 190K
lookup: 12M , b,i applied: 67K