【发布时间】: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