索引是加速查询速度的数据库对象。
但索引并非越多越好。过多的索引会影响DML语句的性能。
sqlplus scott/tiger
CREATE TABLE EMP (
emp_id NUMBER(8) NOT NULL,
last_name VARCHAR2(20) NOT NULL,
first_name VARCHAR2(20) NOT NULL );
CREATE INDEX EMP_LNON EMP ( last_name );
CREATE INDEX EMP_LN_FN ON EMP ( last_name, first_name );
当WHERE子句中有:"LAST_NAME =
arameter" or "LAST_NAME LIKE
arameter"时。
索引EMP_LN会被用到。注意:EMP_LN_FN也会被用到。而且当WHERE子句后有FIRST_NAME =
arameter也会使用第二个索引。
也就是说当你的库中有第二个索引的时候就没有必要建立第一个索引了。应该删除第一个索引,删除第一个索引不但不影响查询的性能还能加速DML语句。因此,这个删除第一个索引的过程就是优化。
优化的规则如下:
If 一个表中有两个索引 ( I1 and I2 ) and
I1索引所涉及的列数<=I2索引所涉及的列数 and
I1索引中列的顺序与I2索引中列的顺序相同
Then
IfI1索引是 UNIQUE then
IfI2索引是一个外键的参考列 then
Do Nothing
Else
删除I2
End If
Else
删除I1
End If
End If
用下面的语句查询出SCOTT模式下面重复的索引:
conn sys/sys as sysdba
SELECT
/*+ RULE */
tab_owner.name owner, t.name table_name,
o1.name || '(' || DECODE(bitand(i1.property, 1), 0, 'N', 1, 'U', '*') || ')' included_index_name ,
o2.name || '(' || DECODE(bitand(i2.property, 1), 0, 'N', 1, 'U', '*') || ')' including_index_name
FROMsys.USER$ tab_owner, sys.OBJ$ t, sys.IND$ i1, sys.OBJ$ o1, sys.IND$ i2, sys.OBJ$ o2
WHERE i1.bo# = i2.bo# AND i1.obj# <> i2.obj# AND i2.cols >= i1.cols AND i1.cols > 0 AND
i1.cols = ( SELECT /*+ ORDERED */ COUNT(1) FROM sys.ICOL$ cc1, sys.icol$ cc2
WHERE cc2.obj# = i2.obj# AND cc1.obj# = i1.obj# AND
cc2.pos# = cc1.pos# AND cc2.COL# = cc1.COL#) AND
i1.obj# = o1.obj# AND i2.obj# = o2.obj# AND t.obj# = i1.bo# AND
t.owner# = tab_owner.USER# AND tab_owner.name LIKE 'SCOTT'
ORDER BY 1, 2
OWNER TABLE_NAME
------------------------------ ------------------------------
INCLUDED_INDEX_NAME INCLUDING_INDEX_NAME
--------------------------------- ---------------------------------
SCOTT EMP
EMP_LN EMP_LN_FN
分享到:
相关推荐
索引优化优化优化优化
因此,在设计和使用MySQL数据库时,了解如何使用和优化索引非常重要。 一个索引是一种数据结构,可以快速定位和访问表中的数据。MySQL支持多种类型的索引,包括B树索引、哈希索引和全文索引等。正确选择索引类型...
一种基于有序二叉树的高效优化索引树 其他地方下载可都是要现金的哦。
海量数据库的查询优化索引总结.建立“适当”的索引是实现查询优化的首要前提。 索引(index)是除表之外另一重要的、用户定义的存储在物理介质上的数据结构。当根据索引码的值搜索数据时,索引提供了对数据的快速...
SQL优化索引.sql
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置.docx
文章目录优化索引为索引列选择合适的数据类型一般原则建立索引,但是不走索引的情况表分区表分区的功能范围分区(Range Partition列表分区(List Partition)哈希分区(Hash Partition)复合分区 优化索引 MySQL中,...
计算机后端-PHP视频教程. mysql优化索引.wmv
可以清晰的了解索引创建的过程,以及索引优化的原理,优化方法。
数据库优化工具,连接后选择数据库会自动在大的表添加索引
Versioned document collections are collections that contain multiple versions of each document. Important examples are Web archives, Wikipedia and other wikis, or source code and documents maintained ...
SQL优化索引详细解释,提高数据库的执行效率
数据库 索引 优化 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引...
数据库索引设计和优化 经典的数据库索引的书籍......................
#资源达人分享计划#
数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化数据库索引设计与优化...
“针对Data Lake环境的非结构化数据的优化索引”是一个旨在处理Data Lake环境中的非结构化数据的索引池的项目。 Data Lake是一个存储库,它以其本机形式存储大量数据。 数据湖的想法是拥有一个企业中所有数据的单一...
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成... 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0