ORACLE SQL TUNING
一.优化器模式
ORACLE的优化器共有3种:
a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性)
为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须
转载
精选
2011-08-28 22:37:08
361阅读
首先建立测试表及数据:SQL> CREATE TABLE TEST AS SELECT CITYCODE C1 FROM CITIZENINFO2;
Table created
SQL> ALTER TABLE TEST MODIFY C1 NOT NULL;
Table altered
SQL> SELECT COUNT(1) FROM TEST;
COUNT(1)
-----
转载
2024-02-25 11:53:50
201阅读
--复合索引又名联合索引,组合索引。在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列(即第一个列)出现在SQL语句的where子句中时,才会使用到该索引; 2、 在使用Oracle9i之前的基于成
转载
2024-05-22 19:06:23
147阅读
约束(constraint)定义:在建表时,为某些列添加特定的规则,保证数据库的数据满足用户的要求。添加约束之后,在往表中(插入、更新)数据时,如果数据不满足约束,则该条语句不能执行分类: 1、非空约束 not null 2、唯一键约束 unique(若有值则唯一,若没值,null可以重复) 3、自定义检查约束 check(设定自定义检查条件) 4、主键约束 primary key(表示主列的约束
转载
2024-04-28 10:33:48
169阅读
概述今天主要介绍Oracle数据库的三大索引类型,仅供参考。 一、B-Tree索引三大特点:高度较低、存储列值、结构有序1.1利用索引特性进行优化外键上建立索引:不但可以提升查询效率,而且可以有效避免锁的竞争(外键所在表delete记录未提交,主键所在表会被锁住)。统计类查询SQL:count(), avg(), sum(), max(), min()排序操作:order by字段建立
转载
2024-04-17 12:50:50
59阅读
当where子句对某一列使用函数时,除非利用这个简单的技术强制索引,否则Oracle优化器不能在查询中使用索引。 通常情况下,如果在WHERE子句中不使用诸如UPPER、REPLACE 或SUBSTRD等函数,就不能对指定列建立特定的条件。但如果使用了这些函数,则会出现一个问题:这些函数会阻碍Oracle优化器对列使用索引,因而与采用索引的情况相比较,查询会花费更多的时间。 庆幸的是,如果在使用函
转载
2024-03-20 21:46:57
23阅读
在一些场景下,可能ORACLE不会自动走索引,这时候,如果对业务清晰,可以尝试使用强制索引,测试查询语句的性能。
SELECT /*+index(t pk_emp)*/* FROM EMP T --强制索引,/*.....*/第一个星星后不能有空格,里边内容结构为:加号index(表名 空格 索引名)。
--如果表用了别名,注释里的表也要使用别名。
亲测有效(不过有效范围有限,最好不要滥
转载
2023-06-10 21:56:30
230阅读
组合索引适用场景:1.适用在单独查询返回记录很多,组合查询后忽然返回记录很少的情况: 比如where 学历=硕士以上 返回不少的记录 比如where 职业=收银员 同样返回不少的记录 于是无论哪个条件查询做索引,都不合适。 可是,如果学历为硕士以上,同时职业又是收银员的,返回的就少之又少了。 于是联合索引就可以这么开始建了。 2.组合查询的组合顺序,要考虑单独的前缀查询情
转载
2023-12-19 23:58:50
61阅读
2 Oracle 中的索引索引是Oracle使用的加速表中数据检索的数据库对象。下面的情况,可以考虑使用索引:1) 大表2) 主键(自动索引)3) 单键列(自动索引)4) 外键列(自动索引)5) 大表上WHERE子句常用的列6) ORDER BY 或者GROUP BY子句中使用的列。7) 至少返回表中20%行的查询8) 不包含null值的列。Oracle中的索引包含有如下几种类型:B*树索引:这是
转载
2024-04-10 10:24:52
40阅读
ORACLE SQL性能优化系列 (十) 31. 强制索引失效 如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例:SELECT ENAME
FROM EMP
WHERE EMPNO = 7935
AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/
AND E
转载
2024-05-06 13:48:32
49阅读
SQL索引 索引 ● 索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。● 索引有很多种我们主要介绍常用的几种:为什么添加了索引之后,会加快查询速度呢?图书馆:如果杂乱地放书的话检索起来就非常困难,所以将书分类,然后再建一个箱子,箱子里面放卡片,卡片里面可以按类查询,按姓名查或者类别查,这样的话速度会快很多很多,这个就有点像索引。索...
原创
2021-08-19 15:45:18
94阅读
概述索引在各种关系型数据库系统中都是举足轻重的组成部分,其对于提高检索数据的速度起至关重要的作用。在Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等。 Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做...
转载
2012-01-20 23:30:00
189阅读
2评论
SQL索引 索引 ● 索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。● 索引有很多种我们主要介绍常用的几种:为什么添加了索引之后,会加快查询速度呢?图书馆:如果杂乱地放书的话检索起来就非常困难,所以将书分类,然后再建一个箱子,箱子里面放卡片,卡片里面可以按类查询,按姓名查或者类别查,这样的话速度会快很多很多,这个就有点像索引。索...
原创
2022-03-29 11:20:27
60阅读
文章目录一.索引1.1 索引概念1.2 索引分类1.3 位图索引(企业版oracle):1.4 B树索引(1) 唯一索引(2) 组合索引(3) 反向键索引(4) 函数索引1.5 和分区相关的索引(可将索引存储在不同分区中)(1) 局部分区索引:(2)全局分区索引:(3)全局非分区索引:二.索引操作2.1 创建标准索引:2.2 查看表中的索引:2.3 查看索引信息:2.4 分析索引是否存在索引碎片
转载
2024-03-19 22:03:59
509阅读
在本教程中,您将学习Oracle INNER JOIN子句以从表中检索具有其他表的匹配行的行。Oracle INNER JOIN语法简介在关系数据库中,数据分布在许多相关的表中。例如,在样本数据库中,销售订单数据主要存储在orders和order_items表中。参考以下ER图结构 -orders表存储订单的标题信息,order_items表存储订单购买货物的明细。订单(orders)表通过ord
转载
2024-03-29 22:17:01
110阅读
Oracle表加索引–加快数据查询的利器什么是索引索引是对表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
通俗一点地讲,索引对数据库中的表而言就相当于一本书的目录。索引的类型1. 普通索引,仅加速查询
2. 全文索引,用来对大表的文本域(char,varchar,text)进行索引。对文本的内容进行分词,进行搜索
3. 唯一索引,加速查询 + 列值唯一(可以有nu
转载
2024-03-04 15:01:52
337阅读
使用索引是提高oracle查询的一种重要方式,索引的使用同时也是一柄双刃剑,使用不当也会导致性能问题。索引的建立方式和查询语句的执行方式都会影响实际执行的效率。同时对索引的维护也会导致索引的性能问题。有些时候使用复合索引时,oracle查询不会自动使用索引,需要使用强制索引(当使用表别名时,强制索引的表名也要使用别名),如下: SELECT /*+ INDEX(KSFK_APPDATA_INFO
转载
2024-05-22 21:45:21
53阅读
<div> 使用索引的目的 加快查询速度 减少I/O操作 消除磁盘排序 何时使用索引 查询返回的记录数 排序表<40% 非排序表 <7% 表的碎片较多(频繁增加、删除) 索引的种类 非唯一索引(最常用) 唯一索引 位图索引 局部有前缀分区索引 局部无前缀分区索引 全局有前缀分区索引 散列分区索引 基于函数的索引 管理索引的准则
转载
2024-04-23 17:41:36
0阅读
SQL查询条件使用函数优化 背景: 由于数据原因表关联只能使用函数对数据进行分隔 select B.* from TABLE_A A cross join TABLE_B B where substr(B.TID, 0, 22)=substr(A.TID, 0, 22) and B.TEST in
原创
2022-09-17 01:27:49
372阅读
一、引言部门使用 Oracle 已经有一些时日,最近在工作中遇到了这么一个需求:我们希望拿到某些数据表的全部索引信息,对索引信息进行检查,检查是否有漏掉没有创建的索引这个需求,核心的点在于,我需要编写一条 sql 语句,来获取到 Oracle 数据库中的数据表的全部索引信息,并且输出的结果还要能够方便我后续的检查工作。因此对这条 sql 语句我们有以下的要求:要能输出数据表的全部索引信息,并且组合
转载
2024-04-12 22:32:22
64阅读