關於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索引
- Android日常學習:Android檢視動畫-View AnimationAndroid動畫View
- 學習Tomcat(七)之Spring內嵌TomcatTomcatSpring
- MySQL View 檢視MySqlView
- 基於深度學習分析與檢索海量短視訊內容深度學習
- 關於開發檢視
- View工作流程-相關學習View
- hive中的 lateral view(側檢視)HiveView
- Linux學習之常用的Linux檔案內容檢視命令!Linux
- odoo檢視入門學習- tree檢視的使用Odoo
- 有關自定義View的學習知識點View
- MySQL之檢視學習MySql
- 關於ModeAnalytics的學習
- 關於HTTP的學習HTTP
- 關於Fragement的學習
- 關於SQLMAP的學習SQL
- 關於機器視覺學習路線的問題?視覺
- 8.1關於動態效能檢視
- 蘇嵌7.9學習日誌
- 蘇嵌學習日誌0711
- 蘇嵌學習日誌0716
- 關於Oracle dba_free_space 檢視的研究Oracle
- Linux檔案內容檢視相關命令Linux
- 關於SCRUM的學習心得Scrum
- SpringMVC原始碼關於檢視解析渲染SpringMVC原始碼
- c++學習筆記 — inline這玩意C++筆記inline
- 關於學習之道
- laravel利用artisan建立view檢視檔案LaravelView
- postgresql關於訪問檢視需要的許可權SQL
- (重要)關於效能的幾個主要動態檢視
- 關於視訊流媒體伺服器的學習記錄伺服器
- SpringBoot原始碼學習4——SpringBoot內嵌Tomcat啟動流程原始碼分析Spring Boot原始碼Tomcat
- 基於深度學習的計算機視覺應用之目標檢測深度學習計算機視覺
- 2分鐘學會CSS內嵌樣式CSS
- Flutter學習之檢視體系Flutter
- ClickHouse 物化檢視學習總結
- SAP ABAP CDS view 檢視的 Replacement 技術介紹View
- nancy Unable to find view engine that could render the view 無法找到檢視模板引擎NaNView
- 鑲嵌資料集工具小結(三)概檢視/OverviewsView