【发布时间】:2026-01-18 18:05:03
【问题描述】:
我有一个有点复杂的查询,大约有 100K 行。
查询在 SQL Server Express 中运行 13 秒(在我的开发盒上运行)
具有相同索引和表的相同查询需要超过 15 分钟才能在 MySQL 5.1 上运行(在我的生产机器上运行 - 功能更强大并且使用 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
【问题讨论】:
-
我更担心它会崩溃!
-
大声笑 - 这就是我迁移到 sql server 的原因...
-
说实话,我看不出这里有真正的问题。
-
问题很清楚——为什么在完全相同的查询和架构下,MySQL 的性能比 SQL Server 差几个数量级。
-
可能有数百个原因。也许你的数据是可疑的。也许 MySQL 有 bug?
标签: mysql sql-server performance comparison