1.临时表的结构是可变的,
如 select * into #t from XXXX where ....
select * into #t from YYYY where ....
建立的。
2.我想在临时表#t的前3个字段上建立索引,如何操作?
3.我的办法是检索出临时表所有字段,用动态SQL语句组织建索引语句,有没有好办法?
...全文
121610打赏收藏
临时表建立索引问题
1.临时表的结构是可变的, 如 select * into #t from XXXX where .... select * into #t from YYYY where .... 建立的。 2.我想在临时表#t的前3个字段上建立索引,如何操作? 3.我的办法是检索出临时表所有字段,用动态SQL语句组织建索引语句,有没有好办法?
--在列名不确定的情况下对临时表#T前三个字段加索引
DECLARE @COL VARCHAR(1000)
SET @COL = ''
SELECT @COL = @COL + COLUMN_NAME + ',' FROM
TEMPDB.INFORMATION_SCHEMA.COLUMNS A
INNER JOIN(SELECT [NAME] FROM TEMPDB.dbo.sysobjects WHERE [ID] = OBJECT_ID(N'TEMPDB..#T'))B
ON A.TABLE_NAME = B.[NAME] AND A.ORDINAL_POSITION <= 3
ORDER BY ORDINAL_POSITION
SET @COL = LEFT(@COL, LEN(@COL) - 1)
EXEC('CREATE INDEX IX_TempTable ON #T(' + @COL + ')')
--在列名不确定的情况下对临时表#T前三个字段加索引
DECLARE @COL VARCHAR(1000)
SET @COL = ''
SELECT @COL = @COL + COLUMN_NAME + ',' FROM
TEMPDB.INFORMATION_SCHEMA.COLUMNS A
INNER JOIN(SELECT [NAME] FROM TEMPDB.dbo.sysobjects WHERE [ID] = OBJECT_ID(N'TEMPDB..#T'))B
ON A.TABLE_NAME = B.[NAME] AND A.ORDINAL_POSITION <= 3
ORDER BY ORDINAL_POSITION
SET @COL = LEFT(@COL, LEN(@COL) - 1)
EXEC('CREATE INDEX IX_TempTable ON #T(' + @COL + ')')
----请问这样可以访问到 #T 吗?