Gor*_*don 1 oracle performance decorator
任何人都可以告诉我,如果它对Oracle 10g有用,我是否使用:
SELECT col1 FROM myTable WHERE col2 = 'someval' AND col3 = "someotherval"
Run Code Online (Sandbox Code Playgroud)
要么
SELECT col1 FROM
SELECT col1, col2, col3 FROM (
SELECT * FROM myTable
) WHERE col2 = 'someval'
) WHERE col3 = "someotherval"
Run Code Online (Sandbox Code Playgroud)
根据解释计划,上述成本是相同的,但在性能测量方面我是一个空白.
背景是:在我的应用程序中,我有几个基本查询,我需要在运行时通过任意条件进行修改,以便为不同的客户端提供数据集.WHERE条件和获取的列特定于客户端配置文件,一些配置可能需要查看col2,而其他配置查看col5,依此类推.此外,用户可以在客户端配置之上添加其他条件和列.我正在考虑使用一组装饰器来实现这一点,所以如果以上是相同的性能,我可以保持所有三个查询部分干净地分开.
这是Oracle 10g.表中有几十万行(实际上它是一个视图).
谢谢你的任何建议.
通常,Oracle的基于成本的优化器将合并包含视图的查询(或在您的情况下为内嵌视图,这基本上是相同的事情)作为优化的查询转换阶段的一部分.
这称为"视图合并",并将您的第二个查询转换为第一个查询.在某些情况下,无法执行全视图合并,但即使这样,也可以允许"谓词推送",因此性能会提高.
http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/optimops.htm#i37745
另见:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/optimops.htm#i37745 http://www.oracle.com/pls/db102/to_URL?remark=ranked&urlname=http:% 2F%2Fdownload.oracle.com%2Fdocs%2Fcd%2FB19306_01%2Fserver.102%2Fb14200%2Fsql_elements006.htm%23SQLRF50908 http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams142.htm #REFRN10141 http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements006.htm#SQLRF50706
长话短说,你不应该在这里遇到问题.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |