前言:很多开发人员在写代码、开发的过程中对一些SQL语句或者程序的细节并不在意,有的人即使知道优化的写法可能也会认为这一点点细节不会影响程序的整体效率的。
在此我想说明:一个开发有这种想法,就说明千千万万个开发有这种想法,众多细小的问题在足够的积累下终有一天会爆发,最后维护程序的人很可能还是自己。
在众多项目开发过程中我总结了一些特别实用的SQL优化细节,希望各位不止SQL中注意优化,程序中也要注意编码效率。
-
必须和禁止
-
非特殊情况,不得使用视图
-
尽量使用常规数据库都能识别的、标准的DQL/DML语句
-
必须使用特定数据库独有的SQL语句时,应在sqlmap的id中以数据库类型结尾,并对常用数据库分别写实现的SQL语句
-
必须遵循数据库第一范式,避免对列做substr
-
避免对条件语句中的like进行右匹配或中间匹配(会走全面扫描)
-
禁止对大数据量的表进行连接或左右连接
-
SELECT的列中禁止使用子查询
-
WHERE子句中,仅对确定且有限的集合使用IN,应尽量使用EXISTS
-
对UPDATE/DELETE语句,严禁不跟WHERE子句,或仅有WHERE 1=1,而没有实质性的条件
规范编码,定期总结,方便自己,舒适用户,做优质程序员