【问题标题】:Create index on select count(*) from table在从表中选择计数(*)上创建索引
【发布时间】:2014-04-20 11:15:20
【问题描述】:

我有一个表“Table”,我在上面多次使用了 select count 语句...

SELECT COUNT(*) FROM Table;

我想在上面创建一个聚集索引。我该如何创建它?谢谢

【问题讨论】:

  • 如果你的表有一个主键,你就已经有一个聚集索引。否则create index 记录在手册中:msdn.microsoft.com/en-us/library/ms188783%28v=sql.105%29.aspx
  • 我认为非聚集索引实际上可能会更快,因为它会更小(因此需要更少的 I/O)。
  • 为了完整起见,聚集索引和非聚集索引都可以支持主键。 Deafult 是集群的,但它是可覆盖的,而且它实际上并不重要,只要它是唯一的(并且未过滤且不为空)。

标签: sql-server tsql indexing


【解决方案1】:

为了高效的COUNT(*),尽可能创建最窄的非聚集索引,即在最小的非空列上创建非聚集索引。

这很简单,但我实际上更困惑的是为什么你会有很多SELECT COUNT(*) 查询。可能是您滥用它而不是 EXISTS 子句?优化器实际上在大多数情况下都能识别这种模式,但为什么不帮助他呢?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 2013-10-24
    • 2013-11-27
    • 1970-01-01
    • 2013-06-02
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多