USP_CREATECOLUMNSTOREINDEX
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SCHEMA | nvarchar(255) | IN | |
@TABLE | nvarchar(255) | IN |
Definition
Copy
CREATE procedure [BBDW].[USP_CREATECOLUMNSTOREINDEX] (@SCHEMA nvarchar(255), @TABLE nvarchar(255))
as
declare @SQL nvarchar(max);
declare @COLUMNS nvarchar(max);
declare @CSINDEX nvarchar(255) = (select BBDW.[UFN_GETCOLUMNSTOREINDEXNAME] (@TABLE));
declare @FILEGROUP nvarchar(40);
set @FILEGROUP =
case
when @TABLE like '%FACT_%' then ' on [BBRPT_FACTIDXGROUP]'
when @TABLE like '%DIM_%' then ' on [BBRPT_DIMIDXGROUP]'
else ' on [BBRPT_DEFGROUP]'
end;
exec BBDW.[USP_DROPOBJECTIFEXISTS] @SCHEMA, @CSINDEX, @TABLE;
set @SQL = 'create nonclustered columnstore index [' + @CSINDEX + '] on ' + @SCHEMA + '.[' + @TABLE + '] (';
select
@COLUMNS = COALESCE(@COLUMNS+',' ,'') + [COLUMN_NAME]
from INFORMATION_SCHEMA.[COLUMNS]
where [TABLE_SCHEMA] = @SCHEMA and [TABLE_NAME] = @TABLE
and ([DATA_TYPE] not in ('binary', 'varbinary', 'ntext', 'text', 'image', 'uniqueidentifier', 'rowversion', 'timestamp', 'sql_variant', 'decimal', 'hierarchyid', 'xml')
and ([CHARACTER_MAXIMUM_LENGTH] <> -1 or [CHARACTER_MAXIMUM_LENGTH] is null)
and ([NUMERIC_PRECISION] < 19 or [NUMERIC_PRECISION] is null or [DATA_TYPE] = 'bigint')
and ([DATETIME_PRECISION] <3 or [DATETIME_PRECISION] is null)
);
set @SQL = @SQL + @COLUMNS + ')' + @FILEGROUP;
exec sp_executesql @SQL;