gpt4 book ai didi

mysql - 基于其他查询结果的 SQL 查询 - 为什么它很慢?

转载 作者:行者123 更新时间:2023-11-29 13:16:44 25 4
gpt4 key购买 nike

我正在根据另一个表的状态从一个表中删除记录,并导致服务器响应时间较长。

基本上,如果存在 namestatus = 'p1' 查询,则应删除 另一个表中的记录。问题是我认为 log_player_login 有数千个 WHERE timestamp > '$timeHuman' AND status = 'p1'

我做错了什么?

DELETE FROM pstone_cuboids
WHERE owner NOT IN (
SELECT DISTINCT(name)
AS name
FROM log_player_login
WHERE timestamp > '2013-01-01 00:00:00' AND status = 'p1'
);

来自:

enter image description here

最佳答案

直到最新版本的 MySQL 为止,not in 使用子查询的效率相当低下。我建议将其替换为不存在并添加索引:

DELETE FROM pstone_cuboids
WHERE not exists (SELECT 1
FROM log_player_login lpl
WHERE lpl.timestamp > '2013-01-01 00:00:00' AND lpl.status = 'p1' and
lpl.name = pston_cuboids.owner
);

create index log_player_login_owner_status_timestamp on log_player_login(name, status, timestamp);

索引应该包含所有三个字段,最后一个字段必须是timestamp

关于mysql - 基于其他查询结果的 SQL 查询 - 为什么它很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365605/

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