关于SQL执行效率的优化

来源:互联网 发布:95成都僵尸事件 知乎 编辑:程序博客网 时间:2024/05/18 18:17

1.首先要确定DB设计者无误,如果DB根据业务设计比较烂,优化是最大的难度。如一张表总是和自己连接才能取出正确数据。。。

2.注意SQL基本书写规范:少用IN、NOTIN、LIKE、<>、!=等耗时的写法;SELECT中不要用‘*’;where替换having;表用别名,抽取字段前加上表等等。。。

3.了解数据库内部机制,如Oracle从右到左处理From子句中的表名,所以在From子句中包含多个表的情况下,将记录最少的表放在最后;Oracle从下到上处理Where子句中多个查询条件,所以表连接语句应写在其他Where条件前,可以过滤掉最大数量记录的条件必须写在Where子句的末尾;Order By语句中的非索引列会降低性能,可以通过添加索引的方式处理。严格控制在Order By语句中使用表达式。。。

4.索引的使用:Where子句中出现IS NULL或者IS NOT NULL时,Oracle会停止使用索引而执行全表扫描。可以考虑在设计表时,对索引列设置为NOT NULL。这样就可以用其他操作来取代判断NULL的操作。当通配符“%”或者“_”作为查询字符串的第一个字符时,索引不会被使用。索引应该用在可以唯一确定数据的列上,如主键,如果一个索引可以确定一般数据那就没作用,如男女区别。索引也不是加的越多越好。不同类型的列进行比较索引会失效,where子句对索引列计算也会同样导致全表扫描数据从而索引失效。


原创粉丝点击