最近测试过程中碰到一个诡异的问题:增加相同的索引,执行相同的查询语句,在A数据库查询耗时缩短,可在B数据库查询耗时几乎不变。这让我一度怀疑B数据库有毒,然而重启大法也没能解决。最后确认问题是由于oracle优化器模式不同,导致不规范索引造成的索引失效。 下面详细看看这个例子。 增加索引语句如下: C ...
分类:
数据库 时间:
2020-06-01 13:30:46
阅读次数:
87
索引是sql优化的使用频度最高的武器 索引就是一种优化查询的工具,注意 是优化了查询.,但是他也影响了dml的速度变慢. 在了解索引的优点之前我们先看一下索引的结构,只有充分了解索引的结构,才能明白索引的机制和应用. 索引结构 根块--茎块 叶块 叶块;存储rowid+列植.索引存储列植的时候是有序 ...
分类:
数据库 时间:
2019-11-28 19:13:04
阅读次数:
93
1> SQL ordered by Gets select * from (select substr(sql_text,1,40) sql, buffer_gets, executions, buffer_gets/executions "Gets/Exec", hash_value,addres ...
分类:
数据库 时间:
2019-11-08 15:09:18
阅读次数:
106
什么是优化器 优化器是Oracle中的一个核心模块,它的作用是为用户输入的SQL选择一个它计算出来的最高效的执行计划。SQL语句在Oracle中的执行过程如下图所示: 基于规则优化器RBO 基于规则的优化器现在基本上已经不怎么用了,这里只做简单介绍。 基于规则的优化器是将一系列规则固定在系统中,给 ...
分类:
数据库 时间:
2019-08-16 11:57:28
阅读次数:
107
世风之狡诈多端,到底忠厚人颠扑不破; 末俗以繁华相尚,终觉冷淡处趣味弥长。 BULK COLLECT运用 在游标中运用 declare cursor C_CUR is SELECT * FROM T_TEST; TYPE T_TYPE IS TABLE OF T_TEST%ROWTYPE; 需要定义 ...
分类:
数据库 时间:
2019-07-09 15:31:50
阅读次数:
151
提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多. 低效: SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = ‘PRESIDENT’ OR JOB = ‘ ...
分类:
数据库 时间:
2019-07-03 14:05:39
阅读次数:
154
使用较大的BUFFER(比如10MB , 10,240,000)可以提高EXPORT和IMPORT的速度. ORACLE将尽可能地获取你所指定的内存大小,即使在内存不满足,也不会报错.这个值至少要和表中最大的列相当,否则列值会被截断. 译者按: 可以肯定的是, 增加BUFFER会大大提高EXPORT ...
分类:
数据库 时间:
2019-07-03 13:55:37
阅读次数:
146
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在nu ...
分类:
数据库 时间:
2019-06-18 12:17:55
阅读次数:
101
甲骨文(中国)是一家很有趣的公司,势头强劲,却被公认为养老公司(俗称西二旗养老院)。风光无限,却也走上了裁员之路。 据甲骨文员工透漏,前一天晚上还在加班改bug,第二天就通知被裁了,甚至要求被裁员工在30分钟内交出公司资产,离开大楼。 但是,和其他公司裁员不同的是:这次被裁的员工还没走出甲骨文的大门 ...
分类:
数据库 时间:
2019-06-06 09:17:06
阅读次数:
120
1、选用适合的Oracle优化器 RULE(基于规则) COST(基于成本) CHOOSE(选择性) 2、增加索引 ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> 低效:SELECT … FROM DEPTWHERE SAL * 12 > 25000 ...
分类:
数据库 时间:
2019-06-03 23:49:27
阅读次数:
135