sql - Oracle SQL Operator >= 比 > 具有更高的性能

标签 sql database oracle performance

我在面试中被问到一个问题。

下面两条SQL会得到相同的结果。但哪个性能更高?

SELECT * FROM EMP WHERE DEPTNO >= 4

SELECT * FROM EMP WHERE DEPTNO > 3

答案是第一个。 在第一个 SQL 中,数据库会直接在搜索的地方找到 DEPT =4。它具有更高的性能。 在第二条SQL中,数据库会定位DEPT=3,向前扫描大于3的行。

我第一次听说这个理论。我看不出执行计划和统计数字有任何区别。

有官方解释吗?

我发现一些中文网站分享相同的技巧。

http://edm.ares.com.tw/dm/newsletter-2014-03-uPKI-OTP-newrelease/it-1.php

最佳答案

如果该列在该字段上有索引,我发现这是一个神话。我尝试使用主键,两个执行计划都使用索引范围扫描,这在主键或唯一索引上非常快。这两个查询的性能非常接近,并且都返回相似的成本,但带有“>”的查询在估计 CPU 成本方面比“>=”好 0.3%。我说 BUSTED!

此外,当我说某些东西表现更好时,通常我指的是 10% 以上,如果不是更多的话。

关于sql - Oracle SQL Operator >= 比 > 具有更高的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551206/

相关文章:

mysql - 计数为 0 的结果未出现

sql - 80 个查询太多了吗?

java - 将 Apache Tomcat Web 服务器与 Microsoft Visual Studio .net 框架集成

sql - 查询优化以减少多个连接语句

php - 数据库架构更改时检查表名的有效方法?

C# SQL 服务器连接

mysql - 我的 SQL 代码没有为我的查询返回任何行

mysql - 如何使用 sql 从内连接查询中选择多个值?

sql-server - 这种情况下最好的数据库结构是什么?

oracle - 遇到符号PLSQL