gpt4 book ai didi

mysql - 资源密集型 MySQL 嵌套选择

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:57 26 4
gpt4 key购买 nike

我有一个非常简单的嵌套查询,调用它时需要 90% 以上的 CPU,我似乎无法弄清楚原因。

SELECT * FROM `push_log` 
WHERE push_id IN
(SELECT `push_id` FROM push_sent_log
WHERE player_id='".$player_id."'
OR push_group='All'
AND `timestamp` >= DATE_SUB(CURDATE(), INTERVAL 24 hour) )
ORDER BY timestamp DESC"

所有查询的字段都有索引。有没有更有效的方法来做到这一点?

最佳答案

尝试删除子查询而不是 join:

SELECT p.*
FROM push_sent_log ps
JOIN `push_log` p ON p.push_id= ps.push_id
WHERE ps.player_id='".$player_id."'
OR ps.push_group='All'
AND `ps.timestamp` >= DATE_SUB(CURDATE(), INTERVAL 24 hour) )
ORDER BY p.timestamp DESC"

我还认为你需要检查你的 sql 中的 where,这似乎没有意义,因为它们处于同一级别:

 WHERE ps.player_id='".$player_id."' 
OR ps.push_group='All'
AND `ps.timestamp` >= DATE_SUB(CURDATE(), INTERVAL 24 hour) -- why do you using OR and AND at the same time?

关于mysql - 资源密集型 MySQL 嵌套选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49924320/

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