転載元:https://www.cnblogs.com/lizhanglong/p/6696722.html
DECLARE @tablename NVARCHAR(50)= 'ホーム'; OBJECT_ID(N'TableColumnMaxLen 'N'U')がnullの場合 ベギン TABLE TableColumnMaxLenのCREATE ( テーブル名NVARCHAR(50)NOT NULL、 ColumnNameにNVARCHAR(50)NOT NULL、 ColumnMaxLen INT NOT NULL、 PRIMARY KEY(テーブル名、ColumnNameに) ); 終わり; DECLARE @columnName NVARCHAR(50)。 DECLARE @columnMaxLen INT。 NVARCHAR(MAX)@sql DECLARE。 DECLARE @initState INT = -1; DECLARE @searchingState INT = -2。 EXISTSされていない場合(SELECT 1 dbo.TableColumnMaxLen FROM WHEREテーブル名= @tablename) ベギン INSERT TableColumnMaxLen SELECT @tablename、 COLUMN_NAME、 @initState INFORMATION_SCHEMA.COLUMNS FROM WHERE TABLE_NAME = @tablename。 終わり; 1 = 1 WHILE ベギン SET @columnName =(SELECT TOP 1 ColumnNameに TableColumnMaxLen FROM WHEREテーブル名= @tablename AND ColumnMaxLen = @initState ); @columnNameがnullの場合 ブレーク; UPDATE TableColumnMaxLen SET ColumnMaxLen = @searchingState WHEREテーブル名= @tablename AND ColumnNameに= @columnName。 SETの@sql = 'SELECT @ columnMaxLen = ISNULL(MAX(LEN([' + @columnName + ']))、0)から' + @tablename。 - PRINTの@sql。 EXEC sp_executesqlを@sql、N 'columnMaxLenが出てint型@'、@columnMaxLen OUT。 UPDATE TableColumnMaxLen SET ColumnMaxLen = @columnMaxLen WHEREテーブル名= @tablename AND ColumnNameに= @columnName。 終わり; 選択する * TableColumnMaxLen FROM WHEREテーブル名= @tablename。
上記の家は、あなたがチェックしたいテーブル名を置き換え
クエリパフォーマンス