如果只选择一行,前1快

use*_*448 7 sql sql-server

数据库是否会在使用Top 1时以一条记录快速打破选择循环?

以便 select top 1 * from customer where cusId = 1234

是快 select * from customer where cusId = 1234 吗?

cusId是独一无二的,所以MSSql理解这样做"更快"没有top 1

Dan*_*dor 4

如果cusId是主键,则两者应该具有相同的 re: 性能。

编辑:

如果您有无论如何都会返回 1 个结果的唯一索引,则只会增加 TOP 1 的开销。

如果您按某些内容排序,而不是只对一行感兴趣,情况会有所不同。

更多的:

不涉及循环,除非涉及表扫描并且根本没有索引cusId。那样的话,TOP 1无论如何也帮不了你。

  • +1 - 如果您比较执行计划,那么“顶部”有一个额外的步骤,但成本太小而无法计算。 (4认同)