MySQL数据库SQL语句优化原理专题(一)( 二 )

看到没 , in子查询被MySQL数据库的优化器改写成了半链接(semi join) , 所以执行计划里才会出现半连接特有的执行步骤(LooseScan) 。
为减少MySQL数据库的损耗 , 一般会将这种in子查询 , 在应用代码里用内连接方式实现 , 这样就避免MySQL数据库优化器改写sql语句这个步骤了 , 减少数据库资源损耗 。
mysql> explain select a.* from t_test1 a join t_test2 b where a.k=b.k and b.k>100;+----+-------------+-------+------------+-------+-------------------+------+---------+------------+------+----------+--------------------------+| id | select_type | table | partitions | type| possible_keys| key| key_len | ref| rows | filtered | Extra|+----+-------------+-------+------------+-------+-------------------+------+---------+------------+------+----------+--------------------------+|1 | SIMPLE| b| NULL| index | k_1,idx_sbtest1_k | k_1| 4| NULL|10 |100.00 | Using where; Using index ||1 | SIMPLE| a| NULL| ref| k_1,idx_sbtest1_k | k_1| 4| sbtest.b.k |1 |100.00 | NULL|+----+-------------+-------+------------+-------+-------------------+------+---------+------------+------+----------+--------------------------+2 rows in set, 1 warning (0.00 sec)夜深了 , 今天就写到这里 , MySQL数据库SQL语句优化原理专题后续再写 。
关注1.如果您喜欢这篇文章 , 请点赞+转发 。
2.如果您特别喜欢 , 请加关注 。