我在面试中被问到一个问题。
下面两条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/