SQL的优化方法主要包含两大类
1、表的优化,2、语句的优化
1.1、纯数字的的字段尽量存储为整型,在排序或比较大小时,相对字符串有很大的速度优势
1.2、在根据需求设计表的时候,可以先具体的去了解每一个功能需求。将一些后续可能要用要到统计,在插入时就实现。而不用在查询时使用函数去计算。
1.3、在存储时间时,尽量保存为时间戳格式,另外同时存储一个对应的数值类型的字段,对后面的排序和按时间区间查询有一定的优势
1.4、要设置主键,主键自带索引。
1.5、尽量不要存储null,或者直接为空,可以用0,1标识等代替。
1.6 、字段的设计长度时要考虑实际的客户需求,不能太短,也不能够太长,一般在客户需求的基础上增加至其1,5倍到2倍之间。尽量使用可变字符串varchar
1.7、 在设计表的关联关系的时候,关联字段的类型一定要保持一致
2、SQL语句方面的优化操作
2.1、按照客户的实际需求去字段,没有用的字段尽量一个都不要取。取得字段越多速度越慢,尤其是对于数据量庞大的表来说。
2.2、尽量不要在where条件中使用数据库函数,函数使用的越多就越慢
2.3 、查询时先看一下相关表是否存在重复数据,如果存在的话可以先做处理,然后在去关联,减少不必要的数据关联。
2.4尽量用exsist,not exists去替换in和not in 函数
2.5 尽量不要使用!=,<>等作为条件判断
2.6 、有可能的话尽量利用 UNION All 替换UNION 函数。
2.7在参数注入时,注入与数据库字段相同的类型,避免在sql中对字段做类型转换操作,或者对注入的参数在sql语句做类型转换。
2.8 在写sql语句之前一定要非常清楚的理解业务逻辑,用最精简的sql语句去实现功能。没有清楚理解业务逻辑,sql语句将会看起来非常乱,且执行效率低下。
2.9、适当的添加索引,对于在where条件后起到很大筛选作用的字段添加索引。大量索引会造成插入和修改缓慢。
2.10 尽量减少like的使用。
2.11 对于需要频繁使用到SQL语句部分,可以做成视图。然后用其他表关联该视图。
2.12 用UNION替换OR 。