【问题标题】:Select specific value from SQL table where column has same value for every record从 SQL 表中选择特定值,其中每条记录的列具有相同的值
【发布时间】: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


【解决方案1】:

第二个查询(没有 DISTINCT)做的最少。但是一定要包含一个注释来解释你为什么要这样做,因为没有 ORDER BY 子句的 TOP 子句对于任何维护你的代码的人来说都是一个危险信号。你会拯救他们,也许是你未来的自己,很多时间和解释的麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-06
    • 2016-01-26
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多