在Oracle中,单列索引和复合索引分别是什么?
按照索引列的个数,索引可以分为单列索引和复合索引。单列索引是基于单个列所建立的索引。复合索引(Composite Indexes),也称为连接索引、组合索引或多列索引,是在某个表中的多个列上建立的索引。复合索引中的列应该以在检索数据的查询中最有意义的顺序出现,但在表中不必是相邻的。若WHERE子句引用了复合索引中的所有列或前导列,则复合索引可以加快SELECT语句的数据检索速度。所以,在复合索引的定义中所使用的列顺序很重要。一般情况下,把最常被访问和选择性较高的列放在前面。复合索引适合于单列条件查询返回多、组合条件查询返回少的场景。需要注意的是,创建复合索引可以消除索引回表读的操作,所以,在很多情况下,DBA通过创建复合索引来提高查询SQL的性能。
在同一个表的相同列上可以创建多个复合索引,只要其索引列具有不同的排列顺序即可。在某些情况下,例如,若前导列的基数很低,则数据库可能使用索引跳跃扫描。
在Oracle中,可以使用视图DBA_IND_COLUMNS来查询复合索引的索引列。下面给出复合索引的一个示例:
1CREATE TABLE T_CI_20170628_LHR AS SELECT * FROM DBA_OBJECTS D; 2CREATE INDEX IDX_CI_20170628_LHR ON T_CI_20170628_LHR(OBJECT_ID,OBJECT_TYPE); 3SELECT * FROM DBA_INDEXES D WHERE D.INDEX_NAME='IDX_CI_20170628_LHR'; 4SYS@orclasm > col COLUMN_NAME format a15 5SYS@orclasm > SELECT D.INDEX_NAME,D.TABLE_NAME,D.COLUMN_NAME FROM DBA_IND_COLUMNS D WHERE D.INDEX_NAME='IDX_CI_20170628_LHR'; 6INDEX_NAME TABLE_NAME COLUMN_NAME 7------------------------------ ------------------------------ --------------- 8IDX_CI_20170628_LHR T_CI_20170628_LHR OBJECT_ID 9IDX_CI_20170628_LHR T_CI_20170628_LHR OBJECT_TYPE
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。
详细内容可以添加麦老师微信或QQ私聊。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
DBA宝典
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。