那 order by empno,ename 的順序,是否又會有影響。empno,ename 與 ename,empno
謝謝!
...全文
75517打赏收藏
索引全掃描 (index full scan)
您好: 網路上,看到有index full scan ,他說: 查询出的数据都必须從索引中可以直接得到。 Index BE_IX is a concatenated index on big_emp (empno,ename) SQL> explain plan for select empno,ename from big_emp order by empno,ename; 那這是說建立一個 組合索引 (empno,ename)後, 要查詢的資料欄位,必須只有 empno,ename 嗎? 若
索引的存在,是为了提高执行效率。
其中一个主要的用法,即是大家知道的,作为目录一般,系统通过索引快速定位到需要的记录上,例如,index range scan
在某些条件下,例如你的例子中,索引起不到上面的效果,但是,由于查询需要的所有字段都处于索引之中,因此,index full scan可以读取比table access full更少的块,消耗更少的IO
CBO根据COST的大小来决定执行计划,感觉你这里有点钻得太死了...
您好:謝謝您
想跟您確認下:
1.您說:
系统只需要从索引中将数据读取出来,而且索引中储存的顺序和order by后面一致,因此索引还避免了排序
-->是指:因為「組合索引」的順序為(empno,ename) ;而 自己下SQL的語法有ORDER BY empno,ename
因為2者的順序都相同,所以 結果可以不用再排序 嗎?
2.
2-A.如果查询中出现了第三个字段,不管是在「查询列」裡,還是「条件列」裡,還是「排序列」裡,都不能走index full scan,因为索引中不包含需要的所有字段。
2-B.如果查询中少了ename字段,则还可以使用,但是效率不如走empno的单列索引的index full scan。
2-C.如果少的是empno字段,则可能会走该索引,但要重新排序。
-->是指:「組合索引」(empno,ename)
2-A.當我SQL 語法中「查询列」or「条件列」or「排序列」裡 , 多出1個欄位 CLOUMN_XX時,都不會用到「組合索引」(empno,ename)的 index full scan?
2-B.若是條件列中,只用empno 欄位,還是會用「組合索引」(empno,ename)的 index full scan,只是效率 不如单列索引(empno)的index full scan。
2-C.若是條件列中,只用ename 欄位,還是會用「組合索引」(empno,ename)的 index full scan,只是要重新排序?
謝謝!
索引全扫描和全表扫描类似,即对索引进行全段扫描
Retrieval of all rowids from an index when there is no start or stop key. Indexed values are scanned in ascending order.
比起全表扫描,索引全扫描有两个好处:1:扫描的块更少,因为索引只储存部分字段的数据;2: 索引是顺序存储的,在某些条件下,可以避免额外的排序操作
在你的例子里,该组合索引上述两个好处都能用到。系统只需要从索引中将数据读取出来,而且索引中储存的顺序和order by后面一致,因此索引还避免了排序
如果查询中出现了第三个字段,不管是在查询列里还是条件列还是排序列里,都不能走index full scan,因为索引中不包含需要的所有字段。如果查询中少了ename字段,则还可以使用,但是效率不如走empno的单列索引的index full scan。如果少的是empno字段,则可能会走该索引,但要重新排序
TOAD下載地址:
key: 0-63920-08593-29060-02749
site message: flyfish576
Site Message: ZYanMooB
Authorizaton Key: 0-63920-03313-29060-07749
http://us-downloads.quest.com/Repository/support.quest.com/Toad for Oracle/12.0/Software/Toad for Oracle 12 64bit.msi
http://us-downloads.quest.com/Repository/support.quest.com/Toad for Oracle/12.0/Software/Toad Development Suite for Oracle 12 64-bit Commercial.exe
http://us-downloads.quest.com/Repository/support.quest.com/Toad for Oracle/12.0/Software/Toad DBA Suite for Oracle 12 64-bit Commercial.exe