MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
summic
V2EX  ›  MySQL

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

  •  
  •   summic · Sep 3, 2011 · 5912 views
    This topic created in 5398 days ago, the information mentioned may be changed or developed.
    这一句执行,没有反应,只能强制执行,同时有查到是条慢查询
    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
    5 replies    1970-01-01 08:00:00 +08:00
    keakon
        1
    keakon  
       Sep 3, 2011
    这个例子应该可以直接用inner join吧…

    不到万不得已不用子查询
    pensz
        2
    pensz  
       Sep 4, 2011
    我的判断是:

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

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

    怀疑这是mysql的bug,不知道挂掉之后mysql做了什么
    summic
        4
    summic  
    OP
       Sep 4, 2011
    @keakon 想知道这么做为什么是错的
    CoX
        5
    CoX  
       Sep 4, 2011
    order 是关键字,最好别用这个表名。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5581 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 07:27 · PVG 15:27 · LAX 00:27 · JFK 03:27
    ♥ Do have faith in what you're doing.