我继承了一些看起来很狡猾的SQL,在查找具有唯一索引的行时,使用COUNT(*) = 1
代替使用EXISTS
我知道我很乐观,但如果查找一个唯一索引并且找到一条记录,那么查询是否足够聪明,可以停止对行进行计数?
我试图对此进行测试,似乎答案是肯定的,但在开始更改此代码的过程之前,我一直在寻找明确的答案。
我们使用Sybase ASE 15.7
答案 0 :(得分:1)
实际上答案是肯定的。
我做了一个查询计划分析,它说:
Forward Scan.
Positioning by key.
Index contains all needed columns. Base table will not be read.
实际上这似乎很清楚,因为查询显然会使用索引,然后聚合只是计算该查询的结果。