0

下面给出的脚本是我面临的情况的简化示例 -

CREATE TABLE #tmp(pk bigint IDENTITY(1,1),id bigint, dt datetime)


DECLARE @X BIGINT=1
WHILE (@X<9223372036854775807)
BEGIN
  INSERT INTO #tmp VALUES (@X,GETDATE())
  SET @x=@x+1
END

CREATE INDEX idx on #tmp(id,dt)

SELECT id,max(dt) from #tmp  GROUP BY id 

这个SP的执行计划是扫描创建的索引,怎么能移到SEEK呢?

提前致谢!

4

1 回答 1

0
CREATE TABLE #tmp
  (
     pk BIGINT IDENTITY(1, 1),
     id BIGINT,
     dt DATETIME
  )

DECLARE @X BIGINT=1

WHILE ( @X < 9223372036854775807 )
  BEGIN
      INSERT INTO #tmp
      VALUES      (@X,GETDATE())

      SET @x=@x + 1
  END

CREATE INDEX idx
  ON #tmp(id, dt)   /*<-- New*/

SELECT id,
       max(dt)
FROM   #tmp
GROUP  BY id 
于 2015-01-30T11:05:13.457 回答