mysql 子查询遇到诡异问题,求指点

2011 年 9 月 3 日
 summic
这一句执行,没有反应,只能强制执行,同时有查到是条慢查询
select *

from order

where FId IN
(select FOrderId from suborder where uid in (1))
limit 0, 20;


但是我子查询改成这样就可以了

select FOrderId as FId from suborder where uid in (1)


我的版本是 5.1.58
6185 次点击
所在节点    MySQL
5 条回复
keakon
2011 年 9 月 3 日
这个例子应该可以直接用inner join吧…

不到万不得已不用子查询
pensz
2011 年 9 月 4 日
我的判断是:

1 原有sql没有错误,如果有错误,会提示,而不是没有反应;
2 后面查询时mysql可能有了缓存或者mysql服务器压力较少,所以能够查询出来结果。
summic
2011 年 9 月 4 日
非常感谢答复

1、sql 语句没有问题
2、后面查询的时候有缓存我觉得也不太象,因为子查询如果有结果,能够成功,只有子查询没查到结果的时候才会挂掉

怀疑这是mysql的bug,不知道挂掉之后mysql做了什么
summic
2011 年 9 月 4 日
@keakon 想知道这么做为什么是错的
CoX
2011 年 9 月 4 日
order 是关键字,最好别用这个表名。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/17701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX