gpt4 book ai didi

mysql:对索引字段的慢查询

转载 作者:行者123 更新时间:2023-11-29 03:57:02 25 4
gpt4 key购买 nike

orders 表有 2m 条记录。有大约 90 万个独特的 ship-to-id

ship_to_id 上有一个索引(字段是int(8))。

下面的查询需要将近 1000 万才能完成。我运行了 PROCESSLIST,它有 Command = QueryState = Sending Data .

当我运行 explain 时,使用现有索引,并且 possible_keysNULL

我应该做些什么来加快查询速度?谢谢。

SELECT 
ship_to_id as customer_id
FROM orders
GROUP BY ship_to_id
HAVING SUM( price_after_discount ) > 0

最佳答案

看起来您没有有用的索引。尝试在 price_after_discount 上添加索引,并添加如下条件:

WHERE price_after_discount > 0

尽量减少需要求和的行数,因为显然可以丢弃任何 0。

同时尝试运行“top”命令并在查询运行时查看 io“wait”列。如果它很高,则意味着您的查询会导致大量磁盘 I/O。如果您有 RAM 来加快速度(如果您使用的是 innodb)或者 myisam 通过文件系统缓存完成,则可以增加各种内存缓冲区。重新启动服务器将刷新这些缓存。

如果你没有足够的 RAM(对于 2M 记录你不需要太多)然后考虑一个分区方案可能是 ship-to-ids 列(如果你的 mysql 版本支持它)。

关于mysql:对索引字段的慢查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16448595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com