約 100K 行のやや複雑なクエリがあります。
クエリは SQL Server Express で 13 秒で実行されます (開発ボックスで実行)
同じインデックスとテーブルを使用した同じクエリを MySQL 5.1 で実行するには 15 分以上かかります (実稼働環境で実行 - はるかに強力で、100% のリソースでテスト済み)。また、メモリ不足エラーでクエリがマシンをクラッシュさせることもあります。
MySQLで何が間違っていますか? なぜそんなに時間がかかるのですか?
select e8.*
from table_a e8
inner join (
select max(e6.id) as id, e6.category, e6.entity, e6.service_date
from (
select e4.*
from table_a e4
inner join (
select max(e2.id) as id, e3.rank, e2.entity, e2.provider_id, e2.service_date
from table_a e2
inner join (
select min(e1.rank) as rank, e1.entity, e1.provider_id, e1.service_date
from table_a e1
where e1.site_id is not null
group by e1.entity, e1.provider_id, e1.service_date
) as e3
on e2.rank= e3.rank
and e2.entity = e3.entity
and e2.provider_id = e3.provider_id
and e2.service_date = e3.service_date
and e2.rank= e3.rank
group by e2.entity, e2.provider_id, e2.service_date, e3.rank
) e5
on e4.id = e5.id
and e4.rank= e5.rank
) e6
group by e6.category, e6.entity, e6.service_date
) e7
on e8.id = e7.id and e7.category = e8.category