我正在处理一个连接两个大表的 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 查询在大型数据集上执行缓慢的一些常见原因有哪些?我可以应用任何优化吗,或者我应该考虑重组我的数据库或查询吗?
orders: INDEX(order_date, customer_id)
如果
orders
的百分比足够小,则优化器将从该 INDEX
开始。 该指数正在“覆盖”。
如果您期望结果中有数百万行,那么由于将结果铲给用户,速度会很慢。 您提供了完整的查询吗?