对于sql优化一般从三个方面下手,分别是逻辑层面,表层面和语句层面。
一、表层面
表层面主要涉及到索引,分区,表空间,介绍如下:
1、索引
对于查询,一定要注意索引的应用,特别是海量数据的表。需要注意的是,索引不是越多越好,而且组合索引应用也是有严格的要求,而且索引使用久了,碎片也会变多,所以也要经查维护索引。
2、 表空间
对于表来说,表空间是对表操作影响很大的因素,主要涉及到频繁操作的数据,由于大数据或者并发影响,经常用到append,会使表空间迅速扩大,所以要定时维护表空间。
3、分区
分区也是对表操作影响很大的因素,比如表分为十个区和不分区处理时间是相差很大的,良好的分区会使数据处理提升几个档次。
二、语句层面
语句层面主要涉及到语句的执行与优化
not in,<>,null,or,%*,等号左边使用表达式 这些都用不到索引,会使查询时间无上限,尽量找到替换语句,比如 not in 和 <>用exists 替换,表达式先赋值在查询等等
三、逻辑层面
逻辑层面主要针对相关表数据和逻辑的处理优化,比如生产过程中处理大量数据的情况下,多查询,多判断,少做insert、update、delete,数据准备完之后一次性更新。或者是表数据很少,就不必要用索引等等,这部分优化好的话,会对整个逻辑处理时间有较大的提升。