小编iNP*_*ice的帖子

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

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

 SELECT * from Log WHERE cookieId IN (select cookieId from Log WHERE someId="blafasel");
Run Code Online (Sandbox Code Playgroud)

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

 select cookieId from Log WHERE someId="blafasel"
Run Code Online (Sandbox Code Playgroud)

几乎立即得到了我的结果.查询也是如此

 SELECT * FROM Log WHERE cookieId IN ("something","somethingelse","athirdoption")
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的帮助.

mysql performance key subquery

2
推荐指数
1
解决办法
241
查看次数

标签 统计

key ×1

mysql ×1

performance ×1

subquery ×1