SQL代码书写的理解误区

在此谈谈SQLScript方面上网上流传的误区,以避免以讹传讹;不是真正的DBA Expert,对他们的技术言论若不明确对否,能验证的最好自己写写代码进行测试便知道。以下我的观点也欢迎指正,不要一味相信别人的,有时用怀疑的眼光去学习可能才摸索到真谛。

1.有人说exist比In快,实际不一定是这样的,若真的是这样我想database厂商也不会需要In的。
2.“IN 和 NOT IN" 也要慎用,否则会导致全表扫描,这个也不是正确的。
3.应尽量避免在where 子句中对字段进行 is null 判断,否则将导致引擎放弃使用索引而进行全表扫描,其实不是这样的。
4.避免在表上进行反相操作,否则用不到相应字段上的索引。经测试,<>与!=操作符号也是可以用INDEX的。
5.SELECT COUNT(1) FROM Tablename这个语句比 SELECT (1) FROM TableName快,也是不对的。
6.关于连接表的顺序或者条件的顺序的说法影响到该语句的执行速度, 甚至之前看到论坛上的朋友说他听别人说多表连接小表需要写在前后,后表写在后面,这样才会快。或是where条件中的field的顺序需要和index中的顺序遮一致。这些言论没有理论去支撑的,不正确。
7.当表上建立了索引,若在查询时用到了索引的列,索引就一定会生效。

REMARK: IT随笔,若转载请注明出去,谢谢!

Author:  TerryXia

原文地址:https://www.cnblogs.com/TerryX168/p/5618358.html