gpt4 book ai didi

MySQL 没有在带有 "IN"的子选择的外部查询上使用键

转载 作者:行者123 更新时间:2023-11-29 01:19:15 24 4
gpt4 key购买 nike

我正在查询这样的数据库:

 SELECT * from Log WHERE cookieId IN (select cookieId from Log WHERE someId="blafasel");

我在 someId 和 cookieId 上有键,但查询速度很慢。如果我运行两个查询(外部和内部)将它们分开或者非常快。

 select cookieId from Log WHERE someId="blafasel"

让我几乎立即得到结果。查询也是如此

 SELECT * FROM Log WHERE cookieId IN ("something","somethingelse","athirdoption")

使用 EXPLAIN 告诉我在两个单一查询中使用键,但对于子选择查询键仅用于内部选择。我的问题是为什么?以及如何让 MySQL 更聪明一点。

好吧,我可以让我的应用程序分开运行两个查询,但这并不方便。

感谢您的帮助。

最佳答案

你用过吗

SELECT  l.*
FROM log l INNER JOIN
log ls ON l.cookieid = ls.cookieid
WHERE ls.someId="blafasel"

关于MySQL 没有在带有 "IN"的子选择的外部查询上使用键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409160/

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