gpt4 book ai didi

MySQL 查询返回无效行并且非常慢

转载 作者:可可西里 更新时间:2023-11-01 06:47:38 25 4
gpt4 key购买 nike

我正在编写一个查询以从另一个表中选择玩家禁令,但首先它非常慢,大约需要 7-14 秒,其次它返回无效行。

第一个查询如下:

SELECT *
FROM sourcebans.sb_bans
WHERE removetype IS NULL
AND removedon IS NULL
AND reason NOT LIKE '%[FragSleuth] Duplicate account%'
AND ip IN(SELECT DISTINCT ip
FROM fragsleuth.history
WHERE trackingid = "ad000c3803b48190aabf382e01b957c9")
OR authid IN(SELECT DISTINCT steamid
FROM fragsleuth.history
WHERE trackingid = "ad000c3803b48190aabf382e01b957c9")

第二个查询如下

SELECT * FROM `history` WHERE trackingid = "ad000c3803b48190aabf382e01b957c9"

还有几张截图来说明我的意思: First Query Second Query

在屏幕截图 1 中,当我要求查询仅返回具有 NULL 的行时,您可以看到它返回了 removedon 和 removetype 不为空的行。

我也担心在历史表中,steamid 和 ip 列会有重复的条目,这可能会使查询变慢,有什么办法可以让查询只选择具有唯一 ip 或 steamid 的行基于跟踪 ID?

如有任何帮助,我们将不胜感激。

谢谢

编辑:我对帮助不知所措,感谢@maraca、@Skorpioh 和@Adam Silenko,查询时间现在不到一秒!

最佳答案

the and 具有更高的优先级 then or...你需要在你的表上建立索引np.如果您没有,请将索引添加到 fragsleuth.history 中的 trackingid 字段

使用一个子查询可能会更快,但我不确定这一点。

SELECT *
FROM sourcebans.sb_bans
WHERE removetype IS NULL
AND removedon IS NULL
AND reason NOT LIKE '%[FragSleuth] Duplicate account%'
AND exists (
SELECT 1 from fragsleuth.history
WHERE trackingid = "ad000c3803b48190aabf382e01b957c9"
and (ip = sourcebans.ip or steamid = sourcebans.authid) )

关于MySQL 查询返回无效行并且非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36120917/

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