我有一个有两列的表:
CREATE TABLE #history(
Today INT NOT NULL,
LastDay INT NOT NULL
PRIMARY KEY(Today, LastDay))
我还创建了一个非聚集索引:
CREATE NONCLUSTERED INDEX #history_IX1 ON #history(LastDay)
但是,当我使用“今日”列加入表时,性能会比使用LastDay列更快,比如20s vs 4s。
我认为问题可能是由LastDay列没有正确编入索引引起的。我也使用SQL提示来强制建立索引,结果是一样的。
以下是一个例子:
INSERT INTO anytable(
anycolumn)
SELECT m.anycolumn
FROM AMillionTable m
INNER JOIN #history h
ON h.Today = m.day
m.day also indexed.
Same query, when change h.Today to h.LastDay, the process speed significantly drops.
针对此问题的任何解决方案?
答案 0 :(得分:1)
这是正常的,因为它们是2个不同的索引CLUSTERED与NONCLUSTERED。使用Today列加入时,将使用CLUSTERED索引。 NONCLUSTERED索引需要额外的工作。
您可以在Link
找到更多信息