zoukankan      html  css  js  c++  java
  • 查询表中所有字段的最大长度(大数据情况)

    DECLARE @tableName NVARCHAR(50)= 'home';
    
    IF OBJECT_ID(N'TableColumnMaxLen', N'U') IS  NULL
        BEGIN
            CREATE TABLE TableColumnMaxLen
                (
                  TableName NVARCHAR(50) NOT NULL ,
                  ColumnName NVARCHAR(50) NOT NULL ,
                  ColumnMaxLen INT NOT NULL ,
                  PRIMARY KEY ( TableName, ColumnName )
                );
        END;
    DECLARE @columnName NVARCHAR(50);
    DECLARE @columnMaxLen INT;
    DECLARE @sql NVARCHAR(MAX);
    DECLARE @initState INT= -1;
    DECLARE @searchingState INT= -2;
    IF NOT EXISTS ( SELECT  1
                    FROM    dbo.TableColumnMaxLen
                    WHERE   TableName = @tableName )
        BEGIN
            INSERT  TableColumnMaxLen
                    SELECT  @tableName ,
                            COLUMN_NAME ,
                            @initState
                    FROM    INFORMATION_SCHEMA.COLUMNS
                    WHERE   TABLE_NAME = @tableName;
        END;
    
    WHILE 1 = 1
        BEGIN
            SET @columnName = ( SELECT TOP 1
                                        ColumnName
                                FROM    TableColumnMaxLen
                                WHERE   TableName = @tableName
                                        AND ColumnMaxLen = @initState
                              );
            IF @columnName IS NULL
                BREAK;
    
            UPDATE  TableColumnMaxLen
            SET     ColumnMaxLen = @searchingState
            WHERE   TableName = @tableName
                    AND ColumnName = @columnName;
    
            SET @sql = 'SELECT @columnMaxLen=ISNULL(MAX(LEN([' + @columnName
                + '])), 0) FROM ' + @tableName;
          --  PRINT @sql;
            EXEC sp_executesql @sql, N'@columnMaxLen int out', @columnMaxLen OUT;
    
            UPDATE  TableColumnMaxLen
            SET     ColumnMaxLen = @columnMaxLen
            WHERE   TableName = @tableName
                    AND ColumnName = @columnName;      
        END;
    
    SELECT  *
    FROM    TableColumnMaxLen
    WHERE   TableName = @tableName;
  • 相关阅读:
    web性能优化
    比 git log 更强大的 git reflog
    父组件调用子组件的方法
    react-loadable 进行代码分割的基本使用
    create-react-app 使用 webpack 打包压缩失败
    mysql安装问题
    php 二维数组排序
    php 文件缓存 include vs serialize vs json_encode
    ab命令压力测试
    mysql使用的坑
  • 原文地址:https://www.cnblogs.com/lizhanglong/p/6696722.html
Copyright © 2011-2022 走看看