慎用子查询,因为难以优化

同样功能的SQL代码,因为写法不同,性能可能会相差几百倍:

SELECT COUNT(*) FROM  NODE_DATA 
         WHERE NODE_ID IN 
                    (
                        SELECT NODE_ID FROM VIEW_NODE WHERE ID_PATH LIKE '%$11F6FE53718CECF8E050007F01007528$%' AND NODE_TYPE='factor'
                    )

受影响的行: 0
时间: 16.602s

改为联接方式查询:

SELECT COUNT(*) FROM  NODE_DATA D 
LEFT JOIN VIEW_NODE N ON N.NODE_ID=D.NODE_ID
WHERE N.ID_PATH LIKE '%$11F6FE53718CECF8E050007F01007528$%' AND NODE_TYPE='factor'

===
受影响的行: 0
时间: 0.074s

差别:16.602/0.074 = 224.35倍

可以参考这篇关于子查询优化的文章:http://chuansong.me/n/1575034547218

posted @ 2017-07-06 15:16  万里沙来手一挥  阅读(310)  评论(0编辑  收藏  举报