【DB笔试面试548】在Oracle中,索引有哪3大特性?
- 2019 年 10 月 10 日
- 笔记
♣
题目部分
在Oracle中,索引有哪3大特性?
♣
答案部分
一般来说索引有3大特性,索引高度比较低、索引存储列值及索引本身有序,对这3大特性的应用如下表所示:
索引特性 |
带来的优势 |
应用的常见SQL |
---|---|---|
高度比较低 |
索引高度低有利于索引范围扫描,这也是通过索引可以非常迅速地从海量数据中获取少量数据的原因。索引的高度越高,访问索引需要读取的数据块数越多,效率越差。 |
SELECT * FROM T WHERE ID=1; |
索引存储列值 |
由于索引比表一般要小得多,所以在通过索引本身就可以查找到所需要的数据的情况下,可以将表看成是一个“瘦表”或“小表”,无须索引回表读这个过程(索引回表读是非常耗费性能的),这样访问路径就会大大减少。利用该特性可以优化的SQL包括COUNT(*)、SUM(索引列)等聚合语句。 |
SELECT COUNT(*) FROM T;SELECT SUM(OBJECT_ID) FROM T; |
索引本身有序 |
能够利用索引本身已有的排序特性从而消除目标SQL的排序操作,从而优化ORDER BY等排序语句。 |
SELECT * FROM T WHERE OBJECT_ID>2 ORDER BY OBJECT_ID; |
能够用索引有序的特性在叶子块的最左边或最右边找到最小和最大值,从而优化类型MAX、MIN语句。 |
SELECT MAX(OBJECT_ID) FROM T; |
另外,需要特别注意的是,索引不存储空值。
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。