Sql优化
对于Sql语句的优化
主要从索引,表字段,IO三个层面进行优化
首先是从索引层面
where 字句使用isnull,!=,in ,not in,or连接,以及模糊查询%在第一个位置、对字段进行表达式操作、对字段用函数进行操作导致全表扫描
1,isnull,解决:使用默认值
2.in not in 解决:使用exists not exists
3.or 解决:使用Union Union all
从表字层面
建表的时候能使用数字类型的字段就是使用数字类型的字段,数字类型的字段作为查询条件比字符串快,因为引擎处理的时候字符串是逐一比较每一字符的,对数字而言比较一次就够了
尽能使用varchar代替char,首先变长字段存储空间小,节省空间,其次对于查询来说,相对较小字段查询效率比较高
合理的增加冗余字段减少表的关联查询
从IO层面
不要使用select *因为多余的字段增加IO开销,也增加了网络的开销
尽量减少子查询,子查询会创建和销毁临时表,开销比较大
在where语句中把能过滤掉大量记录的字段放在前面