【问题标题】:Does it matter for DB efficiency what number is SQL Server's index column?SQL Server 的索引列是多少对数据库效率有影响吗?
【发布时间】:2012-08-31 16:09:33
【问题描述】:

我正在创建一个新的 SQL Server 2008 数据库,并且我一直在想,从效率的角度来看,将索引列放在哪里重要吗?

例如,这个:

--ID is primary key
CREATE TABLE tbl (ID INT, dtIn DATETIME2, dtOut DATETIME2, Type INT)
INSERT tbl VALUES
(1, '01:30', '02:00', 1),
(2, '02:30', '03:00', 1),
(3, '10:30', '11:00', 2)

CREATE INDEX idx_Type ON tbl(Type)

相对于这个:

--ID is primary key
CREATE TABLE tbl (ID INT, Type INT, dtIn DATETIME2, dtOut DATETIME2)
INSERT tbl VALUES
(1, 1, '01:30', '02:00'),
(2, 1, '02:30', '03:00'),
(3, 2, '10:30', '11:00')

CREATE INDEX idx_Type ON tbl(Type)

【问题讨论】:

  • 不,它没有。不过,what place in the index the column has 确实很重要。
  • 哦,我不能将其发布为答案。那好吧。感谢那。不知道如何详细说明。
  • 谢谢。我知道这是一个新手问题......但我正在努力学习。另外,为什么您不能将其发布为答案?
  • 谈到索引中的位置,我将选择“WHERE Type = N AND”这样的复杂条件,其中涉及 dtIn 和 dtOut 列。那我应该改变索引的结构吗?
  • 这个问题似乎是题外话,因为它是关于 DBA 的问题,因此应该在 dba.SE 上

标签: sql sql-server performance tsql indexing


【解决方案1】:

嗯,听起来很有趣,取决于你如何实现

Single column index -it does not matter 

Multi-column index - order of the column does matter in the index,
                     but not in the table

Ben has a proof这里

【讨论】:

  • 对多列索引来说重要的是索引中列的顺序。不是实际表中列的顺序。
【解决方案2】:

不,表中的列放置与使用的资源量无关

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2016-08-23
    • 1970-01-01
    • 2010-09-29
    • 2017-11-08
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多