为什么使用内联视图.. ??oracle-inline view
回答
内嵌视图是Oracle SQL中的一个构造,您可以在SQL FROM,子句中放置查询,就像查询是表名一样。
内嵌视图提供
- 绑定变量可以在语句中被引入到
- 能见度限制数据
- 更好地控制调整到代码
有许多不同使用内联视图的原因。有些事情不能没有内嵌视图来完成,例如:
1)过滤上的解析函数的结果:
select ename from
(select ename, rank() over (order by sal desc) rnk
from emp
)
where rnk < 4;
2)订购的结果使用ROWNUM:
select ename, ROWNUM from
(select ename
from emp
order by ename
);
其他时候,他们只是更容易编写你想写的SQL。
获取排名前N的行。
SELECT name, salary,
FROM (SELECT name, salary
FROM emp
ORDER BY salary DESC)
WHERE rownum <= 10;
内联视图可以看作是以某种方式对所需数据集作出贡献的中间结果集。有时候这完全是提高代码可维护性的问题,有时它在逻辑上是必要的。
您将经常使用内联视图将您的查询分解为逻辑部分,这有助于提高可读性并使得编写更复杂的查询变得更容易一些。
Jva和Tony Andrews提供了一些很好的简单例子,例如Top-N或分页查询,在这些例子中,您可能想要执行查询并对其结果进行排序,然后将其作为更大查询的一部分反过来可能会提供一个查询来执行其他处理,这些查询的逻辑在单个查询中很难实现。
另一个可能非常有用的情况是,如果您正在编写将各种表连接在一起并希望在某些表上执行聚合的查询,那么在执行连接之前将组函数和处理分隔为不同的内联视图,使得管理基数更容易。如果你想要一些例子,我会很乐意让他们更清楚。
Factored子查询(查询开始时在WITH子句中列出查询)和内联视图也常常带来性能优势。如果您需要多次访问子查询的结果,您只需要运行一次,并且可以将其作为全局临时表实现(优化程序的行为方式并非完全黑白,因此我不会深入其中在这里,但你可以做自己的研究 - 例如,参见http://jonathanlewis.wordpress.com/2007/07/26/subquery-factoring-2/)
从Oracle Database Concepts文件存在的inline view concept definition:
内嵌视图不是一个模式对象。 这是一个别名为 (相关名称)的子查询,您可以像使用SQL语句中的视图一样使用 。
关于子查询,请从Oracle SQL Reference手册中查询Using Subqueries。它有一个非常好的教学信息。
无论如何,今天优选使用Subquery Factoring Clause这是一种更强大的内联视图方式。
由于所有的一起的例子:
WITH
dept_costs AS (
SELECT department_name, SUM(salary) dept_total
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY department_name),
avg_cost AS
SELECT * FROM dept_costs
WHERE dept_total >
(SELECT avg FROM (SELECT SUM(dept_total)/COUNT(*) avg
FROM dept_costs)
)
ORDER BY department_name;
那里你可以看到所有之一:
- 内嵌视图查询:
SELECT SUM...
- 相关子查询:
SELECT avg FROM...
- 甲子查询保理:
dept_costs AS (...
它们是什么用于?:
- 为了避免创建中间视图对象:
CREATE VIEW ...
- 为了简化某些查询一个视图不能是有益的。例如,当视图需要从主查询过滤时。
- 1. Activity.addContentView(View)== ViewGroup.addContentView(View)?
- 2. VIEW或MATERIALIZED VIEW?
- 3. android list view view addition
- 4. achartengine switch view chart type in view
- 5. One view controller with multiple views vs multiple view controller in a larger view controller
- 6. 与VIEW
- 7. View和View Controller有什么区别?
- 8. Fluid-Alias-View-Helper with another view helper
- 9. Table view中的不同图像View?
- 10. Qt4 Model/View - 在View中转换数据?
- 11. 关于IB,init,load view和view did load?
- 12. MVP(Model View Presenter)或MVC(Model View Controller)
- 13. AngularJS/Ionic-ion-nav-view vs ion-view
- 14. UIPicker With View + View Tapped!=选定行
- 15. View Composer Laravel 5.3
- 16. View是无形
- 17. Jasny bootstrap:Mobile View
- 18. Swift:Dismiss Image View
- 19. release view in viewDidUnload
- 20. ExtJS4 XTemplates in view;
- 21. Eclipse View otion'show'not displayed
- 22. Codeigniter View -Insert Stament
- 23. Grid View分页
- 24. iAd Banner View
- 25. View-tag dosen't work
- 26. fields_for in rails view
- 27. iphone table view
- 28. DatabaseObjectNotClosedException in view pager
- 29. Android XML Composite View
- 30. Android Market Image View
绑定变量可以在语句中引入限制数据 - u能为它提供例如... – hrishi 2009-07-17 09:47:15
检查此链接 http://www.akadia.com/services/ora_bind_variables.html – rahul 2009-07-17 09:56:41