我正在查询这样的数据库:
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"