तीन टेबल:
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