为什么我的 SQL 查询在大表上使用 JOIN 时这么慢?

问题描述 投票:0回答:1

我正在处理一个连接两个大表的 SQL 查询,但执行时间比预期要长得多。这是我的查询示例:

SELECT a.id, a.name, b.order_date
FROM customers a
JOIN orders b ON a.id = b.customer_id
WHERE b.order_date > '2024-01-01';

customers 表大约有 100 万行,orders 表大约有 1000 万行。两个表都有 id 和 customer_id 索引,所以我不确定为什么性能这么差。

即使使用索引,JOIN 查询在大型数据集上执行缓慢的一些常见原因有哪些?我可以应用任何优化吗,或者我应该考虑重组我的数据库或查询吗?

sql mysql join
1个回答
0
投票
orders:  INDEX(order_date, customer_id)

如果

orders
的百分比足够小,则优化器将从该
INDEX
开始。 该指数正在“覆盖”。

如果您期望结果中有数百万行,那么由于将结果铲给用户,速度会很慢。 您提供了完整的查询吗?

© www.soinside.com 2019 - 2024. All rights reserved.