gpt4 book ai didi

php - 仅对于某些日期范围选择查询太慢

转载 作者:行者123 更新时间:2023-11-29 15:38:56 24 4
gpt4 key购买 nike

查询某些特定日期范围时花费了很长时间。如果我合并这些日期范围,则不会出现性能问题..为什么会发生这种情况?

如果我将按主 id 的顺序更改为 date_time 字段,则工作正常..但我想按主键 id 排序

SELECT * FROM wipes  WHERE site_id = "173" AND (report !="" OR report != null) AND date_time >= "2019-09-05 00:00:00" AND date_time <= "2019-09-05 23:59:59" ORDER BY id DESC LIMIT 20 OFFSET 0 (Query took 188.8281 seconds.)

SELECT * FROM wipes WHERE site_id = "173" AND (report !="" OR report != null) AND date_time >= "2019-09-06 00:00:00" AND date_time <= "2019-09-06 23:59:59" ORDER BY id DESC LIMIT 20 OFFSET 0 (Query took 155.9838 seconds.)

SELECT * FROM wipes WHERE site_id = "173" AND (report !="" OR report != null) AND date_time >= "2019-09-05 00:00:00" AND date_time <= "2019-09-06 23:59:59" ORDER BY id DESC LIMIT 20 OFFSET 0 (Query took 0.3978 seconds.)

最佳答案

ORDER BY 可能会改变速度的原因是 ORDER BY 可能会强制数据库执行排序操作。为了避免这种情况,数据库可能使用了错误的索引,或者它实际上正在排序。解决此问题的一种方法是使用 USE INDEX 向数据库提供提示(在使用 EXPLAIN 之后),另一种方法是为查询提供完美的索引。但是,在向数据库提供提示之前,您应该更新统计信息,看看这是否有助于数据库自己更好地解决问题

ANALYZE TABLE wipes;

首先,改变

report != null

report IS NOT NULL

其次,添加该索引

ALTER TABLE wipes ADD KEY ( site_id, report, date_time )

那么查询就会很快。

关于php - 仅对于某些日期范围选择查询太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57888067/

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