【发布时间】:2022-11-01 08:50:26
【问题描述】:
我有一个表,其中一列对于每条记录具有相同的值。 我想从数据库中选择这个值,哪个查询是最佳的?
SELECT DISTINCT RefID
FROM Database.dbo.Table
SELECT TOP 1 RefID
FROM Database.dbo.Table
SELECT DISTINCT TOP 1 RefId
FROM Database.dbo.Table
【问题讨论】:
-
好吧,使用
TOP子句没有伴随的ORDER BY有点没用,因为你永远不知道你得到的是哪一行TOP 1- 这将是任意的...... -
似乎
SELECT RefID FROM Database.dbo.Table LIMIT 1会非常有效,因为很明显您只需要表中的一个值。 -
@marc_s 我没有包含
ORDER BY,因为我不需要知道我得到的是哪一行TOP 1,因为该表中的每一行对于RefID具有相同的值。 -
@sj95126 谢谢,但
LIMIT是 MySQL 语法。我的查询是 SQL Server 语法。 -
只有
select top(1)在这里才有意义,只是因为你知道所有行都是相同的,所以你只需要寻找第一行;无论哪种方式,Distinct 都会引入表扫描,但如果您只是检查了每个方式的执行计划,您就会知道这一点。
标签: sql sql-server database query-optimization