區域性範圍掃描的靈活應用
區域性範圍掃描的概念:摘自《海量資料庫的解決方案》
能夠實現區域性範圍掃描方式的SQL具有一個非常顯著的特徵,就是不論處理的資料量有多大,始終都能夠確保具有較快的執行速度。也許這句具有魅力的話有些不符合常理,但是對於我們而言,這難道不是我們所追求的目標嗎?
在實現了區域性範圍掃描的瞬間,SQL開始從大量的限制中獲得了自由,但是很明顯在變形之前的SQL中有可能會存在著一些不符合區域性範圍掃描準則的要素,之所以實現了區域性範圍掃描,是因為我們對SQL做了適當變形並使其遵循了區域性範圍掃描的準則。
無法使用區域性掃描的情況:
Group 聚合函式,如sum,avg,count,min,max等。
Order by。
Sort。
Union。
Minux。
一、用讀取路徑實現對排序的替代操作。
表test01索引建在object_name和object_id上。
整體範圍掃描:
select t.owner,t.object_name,t.object_type
from test01 t
where t.object_type like 'TABLE%'
order by t.object_name。
區域性範圍掃描:
select /*+ index_desc(t IDX_OBJECTNAME)*/t.owner,t.object_name,t.object_type --表有別名的必須使用別名,否則hint不會生效的。
from test01 t
where t.object_type like 'TABLE%'
二、max,min的區域性掃描:
全域性掃描:
select max(object_id) from test01 where object_type = 'TABLE';
and t.object_name > ' ';--用該條件才能使用hint提示生效。
區域性掃描:
select /*+ index_desc(test01 IDX_OBJECTID)*/
object_id
from test01
where object_type = 'TABLE'
and object_id > 0 --用該條件才能使用hint提示生效。
and rownum = 1;
三、FILTER型區域性範圍掃描:
select count(*) into cnt from test01 t where t.object_id > 100;
-----------
if cnt > 0
-------------------
如果只是確認存在與否,沒必要對全部資料進行count。
select 1 into cnt from dual
where exists(
select 'X' from test01 t where t.object_id > 100
)
if cnt > 0
只要滿足條件就立即返回。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20577218/viewspace-701401/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 全表掃描,索引範圍掃描與塊的理解Oracle索引
- MySQL8.0之跳躍範圍掃描MySql
- 大表範圍掃描走SORT MERGE JOIN的SQL優化SQL優化
- 掃描線及其應用
- SciPy 應用範圍
- Tomcat的應用範圍Tomcat
- SonarQube系列-透過配置掃描分析範圍,聚焦關鍵問題
- TWAIN掃描識別控制元件:Web應用程式的掃描器SDKAI控制元件Web
- 索引全掃描和索引快速全掃描的區別索引
- Web應用掃描工具WapitiWebAPI
- 小型Web應用掃描工具GrabberWeb
- IP Scanner Pro for mac(區域網IP掃描軟體) 5.0啟用版Mac
- PLM系統應用範圍
- java位運算子的應用範圍Java
- 區域網IP掃描軟體 IP Scanner Pro免啟用最新版
- Web應用掃描測試工具VegaWeb
- 樂訊通雲通訊:物聯卡的應用領域範圍有哪些?
- matlab 繪製置信範圍_fill(繪製其區間形成的區域)Matlab
- Range範圍選區的理解
- Golang的值型別和引用型別的範圍、儲存區域、區別Golang型別
- BCSphere入門教程03:掃描周圍裝置
- MongoDB的適用範圍MongoDB
- spring中的applicationContext的應用範圍SpringAPPContext
- 網站被黑客掃描撞庫該怎麼應對防範?網站黑客
- Vue 批量註冊區域性元件及應用Vue元件
- Tresorit推出端到端加密文件掃描應用加密
- Web應用型別掃描識別工具WhatWebWeb型別
- 使用 Swift 建立簡單的二維碼掃描應用Swift
- Java設計模式——觀察者模式的靈活應用Java設計模式
- ViewState靈活運用View
- 如何高效實現掃描區域網IP、主機名、MAC和埠Mac
- Java包範圍可見性Java
- 掃描技術和掃描工具
- 機器視覺應用中工業相機的掃描方式視覺
- 一個用c#寫的掃描asp原始碼漏洞的應用程式C#原始碼
- 正規表示式如何在PHP裡靈活的應用PHP
- 深入理解maven與應用(二):靈活的構建Maven
- 國內SOA大範圍應用尚需時日