标签:高效 use ctf 重复 ble 存储过程 个数 sql 语句 不能
一、高效 SQL 语句原则
二、全表扫描
三、何时会使用全表扫描
1.表小
2.索引缺少,条件判定列上没有索引
3.使用hint,强制使用全表扫描
4.读的数据比重大。一般超过 10%的数据要读取就会选择全表扫描
5.并行查询,和索引是对立的,两者必须选择一个
四、全表扫描的优化
1.回收高水位线
2.DB_FILE_MULTIBLOCK_READ_COUNT 加大
3.使每个块装的数据更多,减少 pctfree
4.使用并行查询
alter system set db_file_multiblock_read_count=32;修改参数配置,默认为16 个块
alter table t1 pctfree 0; 将每个数据块都装满
alter table t1 move tablespace users; 移动表空间
五、 数据库查询的优化,Hints
Hints,即提示,强制该语句以我们指定的方式运行,作用范围是当前语句,对后面语句不影响。书写时,一定要放在第一个单词(select) 的后面。Hints 的写法有两种: /*+ 提示 */ , --+ 提示
六、SQL 查询优化
1.尽量避免在一个复杂查询里面使用 LIKE ‘%parm1%‘ 百分号会导致相关列的索引无法使用,最好不要用.
2. 索引
3. 复杂查询 可将复杂查询进行拆分,分步进行
4. 尽量使用 union all union 会对数据进行排序,并去除重复的行,比较消耗资源 union all 则不进行排序,不去除重复的行
5. 在where 语句中合理使用 in , not in ,exist,not exist Exist 适合于外表小,内表大 in 适合于外表大,内表小
6. 排序 避免使用消耗资源的操作,带有 distinct, uinon,minus,intersect,order by 的语句 会启动 sql 引擎,distinct 需要一次排序,而其它至少需要执行2次排序。
7. 临时表 慎重使用临时表,可以极大的提高性能。
标签:高效 use ctf 重复 ble 存储过程 个数 sql 语句 不能
原文地址:http://www.cnblogs.com/wisdo/p/7439816.html