gpt4 book ai didi

MySQL select not in 真的很慢

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:13 28 4
gpt4 key购买 nike

这就是我现在拥有的。

SELECT distinct ClientID 
FROM Table
WHERE PAmt = '' and ClientID not in
(select distinct ClientID from Table where PAmt != '')
ORDER BY ID ASC

ClientID 可以多次出现在表中,其中一些具有 PAmt 值,而另一些则没有。我试图只获取从未有过 PAmt 值的 clientid。该表有大约 12000 个条目,只有 2700 个是唯一的 clientid

最佳答案

我认为这可以更容易地解决

SELECT 
ClientID,
MAX(IF(PAmt='',0,1)) AS HasPAmt
FROM `Table`
GROUP BY ClientID
HAVING HasPAmt=0

编辑

关于这背后的基本原理的一些话:

MySQL 中的子查询是一件很棘手的事情:如果结果集太大(原始 SQL)或与驱动查询交织在一起(@DavidFleeman 的回答),内部查询将循环,即它对驱动的每一行重复询问。这当然会带来糟糕的表现。

因此我们尝试以某种方式重新制定查询,以避免循环。我的建议只运行两个查询:第一个(HAVING 之前的所有内容)将创建一个临时表,将每个不同的 ClientID 标记为至少有一个非空 PAmt(或没有), second 只选择临时表中标记为没有的那些行到最终结果集中。

关于MySQL select not in 真的很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530260/

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