因为在某个复(bian)杂(tai)需求中用到了170+张表进行查询,而且表中的数据过多,查起来缓慢。只能给这些表添加索引。但是,连表名也是无法确定的(无力吐槽)。
使用游标遍历查询出来的符合条件的表名,通过拼接sql语句进行建立索引。
--声明变量DECLARE @tableName AS VARCHAR(50) = '', @SqlStr AS VARCHAR(MAX) = '';--声明游标DECLARE C_TableName CURSOR FAST_FORWARD FOR ( select name from sysobjects where xtype='u' AND name LIKE 'EAR%2019' --读取库中的所有表名);OPEN C_TableName;--取第一条记录FETCH NEXT FROM C_TableName INTO @tableName;WHILE @@FETCH_STATUS = 0BEGIN --组装sql语句 SET @SqlStr = 'CREATE INDEX ' + @tableName + '_called_duration' + ' ON ' + @tableName + '(called,duration);'; EXEC (@SqlStr); PRINT @SqlStr; --取下一条记录 FETCH NEXT FROM C_TableName INTO @tableName;END-- 关闭游标CLOSE C_TableName;-- 释放游标DEALLOCATE C_TableName;
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728