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

2011-09-03 20:57:25 +08:00
 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
5004 次点击
所在节点    MySQL
5 条回复
keakon
2011-09-03 21:21:54 +08:00
这个例子应该可以直接用inner join吧…

不到万不得已不用子查询
pensz
2011-09-04 12:25:27 +08:00
我的判断是:

1 原有sql没有错误,如果有错误,会提示,而不是没有反应;
2 后面查询时mysql可能有了缓存或者mysql服务器压力较少,所以能够查询出来结果。
summic
2011-09-04 17:03:41 +08:00
非常感谢答复

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

怀疑这是mysql的bug,不知道挂掉之后mysql做了什么
summic
2011-09-04 17:04:59 +08:00
@keakon 想知道这么做为什么是错的
CoX
2011-09-04 17:35:34 +08:00
order 是关键字,最好别用这个表名。

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

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

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

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

© 2021 V2EX