viernes, 15 de julio de 2016

Indices particion

DECLARE @db_id SMALLINT;
DECLARE @object_id INT;


SET @db_id = DB_ID(N'NombreDb');
SET @object_id = OBJECT_ID(N'NOmbreTabla');

    SELECT * FROM sys.dm_db_index_physical_stats(@db_id, @object_id, NULL, NULL , 'LIMITED');

SELECT
    object_id AS objectid,
    index_id AS indexid,
    partition_number AS partitionnum,
    avg_fragmentation_in_percent AS frag

FROM sys.dm_db_index_physical_stats (@db_id, @object_id, NULL , NULL, 'LIMITED')
WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;



DECLARE @schemaname nvarchar(130);
DECLARE @objectname nvarchar(130);
DECLARE @indexname nvarchar(130);
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @partitioncount bigint;
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @command nvarchar(4000);

DECLARE @pFrag INT

set @objectid =757577737

set  @indexid=17

  SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)
        FROM sys.objects AS o
        JOIN sys.schemas as s ON s.schema_id = o.schema_id
        WHERE o.object_id = @objectid;

         SELECT @indexname = QUOTENAME(name)
        FROM sys.indexes
        WHERE  object_id = @objectid AND index_id = @indexid;
        SELECT @partitioncount = count (*)
        FROM sys.partitions
        WHERE object_id = @objectid AND index_id = @indexid;

        select  @objectname,@schemaname,@indexname,@partitioncount
       
        SELECT       
            @pFrag=avg_fragmentation_in_percent
        FROM sys.dm_db_index_physical_stats (12, 757577737, @indexid , NULL, 'LIMITED')
        WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;
       
        SELECT  @indexname AS Nombre ,@pFrag Fragmentacion
        IF @pFrag>30
        BEGIN
            IF CHARINDEX('PK',@indexname,0)=0
            BEGIN
                SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD with(ONLINE = ON)';
            END

        END
        ELSE
        BEGIN
            IF CHARINDEX('PK',@indexname,0)=0                
                SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE with(ONLINE = ON)';
        END
       
         --

          select @command;



ALTER INDEX [IX_SMOUTBOX_DATE_CLIENT] ON [dbo].[SmsOutBox] REORGANIZE with(ONLINE = ON)


--DECLARE @document VARCHAR(100)
--SELECT @document = 'Reflectors are vital safety' +
--                   ' components of your bicycle.';
--SELECT CHARINDEX('X', @document, 5);


No hay comentarios:

Publicar un comentario