0
テーブルとorder_byの間でジョインを使用する複雑なクエリがあります。以下MySQL order_by最適化
サンプル:1秒でORDER_BY仕上げWITHOUT
select distinct `accounts`.`id`,
`accounts`.`number_of_listings` as alias_0
from `accounts`
left outer join `revenue_item_account_leads` on `revenue_item_account_leads`.`account_id` = `accounts`.`id`
left outer join `matches` on `matches`.`matchable_id` = `accounts`.`id`
and `matches`.`matchable_type` = 'Account'
where `accounts`.`locale_id` = 1
and (
revenue_item_account_leads.platform_id is null
or (revenue_item_account_leads.platform_id != 6)
)
and (
matches.matched_matchable_id is null
or (
matches.matched_matchable_id in (14, 31, 37)
and matches.score < 0.75
)
or (matches.matched_matchable_id not in (14, 31, 37))
)
and (accounts.number_of_listings > 0)
order by `accounts`.`number_of_listings` desc LIMIT 25 OFFSET 0
クエリ。 order_byのWITHクエリは5秒で終了します(本番環境では使用できません)。
accounts.number_of_listingsには既にインデックスがあります。さらに、私たちが参加している関連性に関する指標もあります。
これを改善する方法はありますか?
'EXPLAIN SELECT ... 'と' SHOW CREATE TABLE'を提供してください –