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语句中把能过滤掉大量记录的字段放在前面