しばらくの間、次のクエリを使用してきましたが、結果データベースが大きくなるにつれて、使用できなくなるほど遅くなりました。誰かがこれを行う別の方法を提案できますか?
c.name と r.scope にフルテキスト インデックスがあります
SELECT * FROM results r
INNER JOIN categories c on r.id = c.result_id
INNER JOIN tags t on r.id = t.result_id
WHERE c.name in ('purchase', 'single_family', 'other')
AND ( r.scope = 'all' OR r.scope = 'hi' )
AND published = 1
GROUP BY r.id
HAVING COUNT(c.c_id) >= 3
ORDER BY r.usefulness DESC
LIMIT 8 OFFSET 0
どんな助けでも大歓迎です。ありがとう!
編集:EXPLAINの結果は次のとおりです
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE c range nameindex,name nameindex 767 NULL 10036 Using where; Using temporary; Using filesort
1 SIMPLE t ALL NULL NULL NULL NULL 10229 Using where; Using join buffer
1 SIMPLE r eq_ref PRIMARY,scope PRIMARY 4 rfw.t.result_id 1 Using where