如何改进大型mysql数据库的“WHERE NOT EXIST”查询
我写的这个查询非常完美,但是由于数据库开始增长,这个查询变得越来越慢,直到现在执行起来几乎需要54秒。有没有办法改进这个查询,使其更快,因为我不想让这个54变得更长如何改进大型mysql数据库的“WHERE NOT EXIST”查询,mysql,database,pdo,Mysql,Database,Pdo,我写的这个查询非常完美,但是由于数据库开始增长,这个查询变得越来越慢,直到现在执行起来几乎需要54秒。有没有办法改进这个查询,使其更快,因为我不想让这个54变得更长 SELECT twitter.user_id AS id FROM twitter WHERE NOT EXISTS ( SELECT stats.id FROM stats
SELECT
twitter.user_id AS id
FROM twitter
WHERE NOT EXISTS
(
SELECT stats.id
FROM stats
WHERE stats.user_id = twitter.user_id AND stats.created_on >= now() - INTERVAL 1 DAY
)
GROUP BY twitter.id
LIMIT 0 , 300
我猜您的字段缺少索引,因此我建议在连接列和日期字段时添加索引 因此,您可能需要在上添加索引
stats.user_id
twitter.user_id
stats.created_on
您可以使用explain查看查询的执行情况,它会告诉您查询中使用了哪些索引。您是否在stats.user\u id、twitter.user\u id、stats.created\u on上有索引?我刚刚在它们上添加了索引,这能解决问题吗?是的!谢谢你,阿比克!如果你想回答这个问题,我会投票给你,在这个问题上,看看你得到了什么。。此外,您还可以使用explain查看查询的执行情况,并使用indexesTry在notexists上使用连接,这样会更快一些。您需要在stats user_id上创建索引。另一个解决方案是,您可以创建一个临时表,其中engine=memory和btree索引