该查询按预期工作,但速度非常慢。这里有人有提高性能的建议吗?
我本质上只是创建一个临时表来存储所有表和列名称,并通过 WHILE 语句循环它们,以使用我想要的详细信息创建到另一个表的动态插入。
我最近的一次运行花费了大约 21 分钟,这并不完全糟糕(考虑到任务),但我很想获得一些关于如何/在哪里可以对其进行微调的意见。
USE <DATABASE>;
IF NOT EXISTS(SELECT *
FROM sys.schemas WHERE name='temp')
BEGIN
EXEC ('CREATE SCHEMA temp');
END;
IF OBJECT_ID('temp.columns') IS NOT NULL
BEGIN
DROP TABLE temp.columns
END;
SELECT [table_name]
, [column_name]
, [data_type]
, [is_nullable]
, [numeric_scale]
, [ordinal_position]
INTO [temp].[columns]
FROM information_schema.columns c
WHERE table_schema = 'dbo'
-- AND table_name = 'CONTACTS'
;
IF OBJECT_ID('_TableColumnsUsed') IS NOT NULL
BEGIN
DROP TABLE _TableColumnsUsed
END;
CREATE TABLE _TableColumnsUsed (Table_Name VARCHAR(255) NULL, Column_Position INT, Column_Name VARCHAR(255) …Run Code Online (Sandbox Code Playgroud)