22.1 嵌套查询的优化

22.1 嵌套查询的优化

当SQL语句存在嵌套查询时,MySQL会生成临时表来存储子查询的结果数据,外层查询会从临时表中读取数据,待整个查询完毕后,会删除临时表,整个过程比较耗时。此时,可以使用JOIN语句代替嵌套查询来提升数据库的查询性能。

例如,查询t_goods数据表中t_category字段不在t_goods_category数据表中的数据,使用嵌套查询如下:


mysql> EXPLAIN SELECT * FROM t_goods
    -> WHERE t_category NOT IN   
    -> (SELECT t_category FROM t_goods_category) \G  
*************************** 1. row ***************************
           id: 1
  select_type: PRIMARY
        table: t_goods
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 14
     filtered: 100.00
        Extra: Using where
*************************** 2. row ***************************
           id: 2
  select_type: SUBQUERY
        table: t_goods_category
   partitions: NULL
         type: ALL
possible_keys: NULL
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值