【发布时间】:2012-10-31 07:23:00
【问题描述】:
我有一个与 MS SQL 集成的 Oracle 服务器作为链接服务器。目前我正在研究查询优化。我发现查询如下:
SELECT colName1, colName2, ..
FROM ORACLE.TBL_TBLENAME
WHERE something = @something
工作非常缓慢。另一方面,同样的查询写成:
EXECUTE ('SELECT colName1, colName2, ..
FROM TBL_TBLENAME
WHERE something :something',@something) at ORACLE
工作速度更快。
我关心的是执行计划。对于第一个查询,估计子树成本为 0.16,第二个查询为 3.36。第二个查询执行“远程扫描”。我不知道这是好还是不好。
查询应该经常运行(1 分钟内大约 20 个查询)。
【问题讨论】:
-
共享执行计划怎么样?
-
不确定如何在此处嵌入执行计划,但它们非常简单:` 1st) SELECT (Cost 0%)
-
刚刚阅读 T. Kyte 关于 Oracle 开发和架构的书。
:something(绑定变量)不是他对查询的第一改进,承诺更快的结果时间吗?@something一样吗?还是你第一次查询后缓存了结果,现在:something是缓存结果的受益者? (我对数据库了解一点,但对 Oracle 的细节了解不多,所以所有这些都是一个开放的问题)。祝大家好运。
标签: sql-server oracle oracle11g linked-server