Üç tablo:
product
: sütunlarla: ( a, g, ...a_lot_more... )
a: PK, clustered
g: bit-column
main
: sütunlarla: ( c, f, a, b, ...a_lot_more... )
c: PK, clustered
f: bit-column
(a, b): UQ
lookup
sütunlarla: ( a, b, c, i )
(a, b): PK, clustered
a: FK to product(a)
c: UQ, FK to main(c)
i: bit-column
Katılmak için iyi dizinler bulamıyorum:
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
Bir kaplama endeksi denedim product (g, a, ...)
ve kullanılır ama muhteşem sonuçlarla değil.
lookup
Tablodaki bazı endeks kombinasyonları , bir önceki plana göre hafif verimlilik kazancı ile endeks birleştirme ile yürütme planları üretmektedir.
Kaçırdığım açık bir kombinasyon var mı?
Yapının yeniden tasarımı yardımcı olabilir mi?
DBMS MySQL 5.5 ve tüm tablolar InnoDB kullanıyor.
Tablo boyutları:
product: 67K , g applied: 64K
main: 420K , f applied: 190K
lookup: 12M , b,i applied: 67K