【发布时间】:2020-02-06 08:17:07
【问题描述】:
从 sql server 客户端查询 oracle:
select top 10 * from [192.168.18.25]..ORDER where date >= '2019/01/01'
上述查询大约需要 400 秒,而在 oracle 客户端中只需几毫秒。
更让我吃惊的是,当将>=替换为<=,或者将日期2019/01/01替换为小于表中最小日期的日期时,查询将再次以毫秒为单位完成。
什么可能导致查询中>= someDate 的性能不佳?
【问题讨论】:
-
如果您想了解您的流程,那么您需要在 Oracle DB 上查看计划。也许在这里执行很慢。
-
@RustamPulatov 相同的查询在 oracle 中以毫秒为单位完成。所以我认为这与查询计划无关。
-
sql server client是什么意思? -
@TomC 我的意思是任何运行 sql server sql 的客户端,比如 Navicat、sql server management studio 等。
-
所以这是在 sql server 中设置为我假设的链接服务器?我认为您需要查看在 oracle 数据库上运行的实际查询,因为可能正在进行一些翻译。它是否可能相当于
cast date as varchar >= '2019/01/01'。也许尝试将字符串显式转换为日期时间?除非你能窥探到实际的 oracle 查询,否则很难知道。
标签: sql sql-server database oracle