關於inline view內嵌檢視的學習
看一篇的時候碰巧看到有關inline view的概念,不太熟悉,查了下。
所謂inline view,也叫內前檢視,說白了,就是執行的時候才建立的檢視。例如select ... from (select ... from (select ...)),這裡作為from表來使用的select語句建立的就是一個內嵌檢視,個人理解,之所以叫內嵌,就是因為它是放在一個語句中的,而且可以多次巢狀,但這種內嵌檢視只能在當前的SQL中使用,不能像CREATE VIEW建立的檢視那樣重複使用,不是一個實際存在的物件。
再來看看Concept中對它的定義:
Inline Views
An inline view is not a schema object. It is a subquery with an alias (correlation name) that you can use like a view within a SQL statement.
感覺它就是一個SQL的使用技巧,可以讓你不用CREATE VIEW顯示建立一個檢視,不用維護它,只需要在SQL中使用巢狀,就可以使用檢視封裝查詢結果的特性。
再看看MOS上有什麼關於inline view的介紹。找到一個SELECT With An INLINE VIEW Fails With ORA-600 [9999] (文件 ID 1068871.1),指出在11.1.0.7存在一個bug。
The query --------- select count(*) from (select count(*) as numLLEids from LaborLevelEntry where ((upper(NAME) = upper( N'Division2') AND LABORLEVELDEFID = 1 AND inActive=0) OR (upper(NAME) = upper( N'Department999999') AND LABORLEVELDEFID = 2 AND inActive=0)) group by laborleveldefid) numrows ; 11.1.0.6: (good results) COUNT(*) ---------- 2 11.1.0.7: (wrong results) COUNT(*) ---------- 1 1 Disabling view merging in 11.1.0.7 we got the good results.
這個問題主要是在這個版本的Oracle中,使用上面的inline view查詢的結果是分組的樣式,關閉隱含引數_simple_view_merging可以得到正確結果,或者給該版本打一個補丁Patch 8327137也行。
找了一個10g的庫,看到_simple_view_merging隱含引數是TRUE,該引數是預設開啟的。
(正如白鱔所說,這種從不同參考抓到的知識點,往往只是獨立的,如果能關聯起來那就最好了,這裡僅此留個記處,希望未來能用到)。
另外,這篇博文(http://hi.baidu.com/optical/item/cfc7c0ea0d94d8e2fb42ba5d)中提到內嵌檢視與子查詢(subquery)的區別:
A subquery (sub-query) is a SELECT statement in the WHERE- or HAVING-clause of another SELECT statement.
Example subqueries:
Subquery executes first and feeds output into the main query:
SELECT ename, deptno
FROM emp
WHERE deptno = (SELECT deptno
FROM emp
WHERE ename = 'TAYLOR');
Correlated subquery (both executes simultaneously):
SELECT ename, deptno, sal
FROM emp x
WHERE sal > (SELECT AVG(sal)
FROM emp
WHERE emp.deptno = x.deptno)
ORDER BY deptno;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7192724/viewspace-773022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 禁用內嵌檢視的排序排序
- Sql Server關於indexed view索引檢視的總結SQLServerIndexView索引
- Dataguard (Standby) 相關的檢視(View)View
- Android日常學習:Android檢視動畫-View AnimationAndroid動畫View
- 關於自定義檢視容器(Container View Controller)AIViewController
- 基於深度學習分析與檢索海量短視訊內容深度學習
- 『小程式開發』關於微信小程式web-view元件內嵌h5的具體配置流程微信小程式WebView元件H5
- 關於內嵌物件(Embedded Object)快取設計的問題物件Object快取
- MySQL View 檢視MySqlView
- DG學習筆記(12)_相關檢視筆記
- 學習Tomcat(七)之Spring內嵌TomcatTomcatSpring
- 關於inline函式inline函式
- 關於開發檢視
- materialized view (物化檢視)ZedView
- odoo檢視入門學習- tree檢視的使用Odoo
- View工作流程-相關學習View
- 在列印視窗,列印檢視View的子檢視結構圖View
- hive中的 lateral view(側檢視)HiveView
- MySQL View(檢視)詳解MySqlView
- 檢視所有VIEW/TABLE in MSSQLViewSQL
- 2 Day DBA-管理方案物件-關於方案物件管理許可權-管理檢視-練習:檢視檢視物件
- MySQL之檢視學習MySql
- 學習筆記 檢視筆記
- 物化檢視-學習篇
- 關於oracle的jobs的兩個檢視Oracle
- 有關自定義View的學習知識點View
- 關於Fragement的學習
- 關於SQLMAP的學習SQL
- 關於HTTP的學習HTTP
- 關於DDD的學習
- 關於學習
- 關於機器視覺學習路線的問題?視覺
- 全面學習MySQL中的檢視(2) 指定檢視建立者MySql
- Linux學習之常用的Linux檔案內容檢視命令!Linux
- 蘇嵌7.9學習日誌
- [iOS]關於檢視下拉選單的猜想iOS
- 關於SGA的常用動態效能檢視
- 對資料庫檢視view的理解資料庫View