设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > MySql教程 > 正文

8种你可能正在写错的SQL用法(4)

发布时间:2019-07-22 15:59 所属栏目:115 来源:佚名
导读:MySQL 对待 EXISTS 子句时,仍然采用嵌套子查询的执行方式。如下面的 SQL 语句: SELECT* FROMmy_neighborn LEFTJOINmy_neighbor_applysra ONn.id=sra.neighbor_id ANDsra.user_id='xxx' WHEREn.topic_status4 ANDE

MySQL 对待 EXISTS 子句时,仍然采用嵌套子查询的执行方式。如下面的 SQL 语句:

  1. SELECT *  
  2. FROM   my_neighbor n   
  3.        LEFT JOIN my_neighbor_apply sra   
  4.               ON n.id = sra.neighbor_id   
  5.                  AND sra.user_id = 'xxx'   
  6. WHERE  n.topic_status < 4   
  7.        AND EXISTS(SELECT 1   
  8.                   FROM   message_info m   
  9.                   WHERE  n.id = m.neighbor_id   
  10.                          AND m.inuser = 'xxx')   
  11.        AND n.topic_type <> 5  

执行计划为:

  1. +----+--------------------+-------+------+-----+------------------------------------------+---------+-------+---------+ -----+  
  2. | id | select_type        | table | type | possible_keys     | key   | key_len | ref   | rows    | Extra   |  
  3. +----+--------------------+-------+------+ -----+------------------------------------------+---------+-------+---------+ -----+  
  4. |  1 | PRIMARY            | n     | ALL  |  | NULL     | NULL    | NULL  | 1086041 | Using where                   |  
  5. |  1 | PRIMARY            | sra   | ref  |  | idx_user_id | 123     | const |       1 | Using where          |  
  6. |  2 | DEPENDENT SUBQUERY | m     | ref  |  | idx_message_info   | 122     | const |       1 | Using index condition; Using where |  
  7. +----+--------------------+-------+------+ -----+------------------------------------------+---------+-------+---------+ -----+ 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读