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

 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"

10-06 13:21
查看更多