Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 重建/重新组织对某些表不起作用?_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 重建/重新组织对某些表不起作用?

Sql 重建/重新组织对某些表不起作用?,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我正在使用这个博客重建/重新组织我的索引。除少数情况外,它在大多数情况下都有效。比如说, SELECT dbschemas.[Name] AS 'Schema', dbtables.[Name] AS 'Table', dbindexes.[Name] AS 'Index', indexstats.avg_fragmentation_in_percent, indexstats.page_count FROM sys.dm_db_index_physica

我正在使用这个博客重建/重新组织我的索引。除少数情况外,它在大多数情况下都有效。比如说,

SELECT
    dbschemas.[Name] AS 'Schema',
    dbtables.[Name] AS 'Table',
    dbindexes.[Name] AS 'Index',
    indexstats.avg_fragmentation_in_percent,
    indexstats.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.TABLES dbtables
    ON dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas
    ON dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes
    ON dbindexes.[object_id] = indexstats.[object_id]
    AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID()
ORDER BY indexstats.avg_fragmentation_in_percent DESC
威尔告诉我这个结果

Schema  Table                   Index                           avg_fragmentation_in_percent    page_count
---------------------------------------------------------------------------------------------------------
dbo     DealGallery             NULL                                83.3333333333333                7
dbo     UserRewardActions       NULL                                77.2034742987327                56153
dbo     Order                   PK__Order__3214EC275CFA57FE         50                              2
dbo     RetailersTranslations   PK__Retailer__3214EC2736153FBA      50                              2
dbo     Batch                   PK__Batch__3214EC2786046795         50                              2
dbo     BatchProducts           PK__BatchPro__3214EC2709FBECDC      50                              2
dbo     ProductDeals            PK__ProductD__3214EC27CE27FF86      50                              2
dbo     PopTemplates            PK__PopTempl__3214EC279BBD3055      21.0526315789474                19
dbo     ELMAH_Error             NULL                                10.3310852237891                52113
重建上述索引不起作用。我在用

ALTER INDEX ALL ON DealGallery  
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON);

ALTER INDEX ALL ON DealGallery  
REORGANIZE ;

还有人能解释一下为什么在索引列中显示NULL吗?

重建/重组工作正常。您读取的查询结果不正确

dm_db_index_physical_statsfincation具有显示堆和索引信息的索引id

   indexstats.index_id = 0 -- Heap or table
   indexstats.index_id > 0 -- Indexes
下一行将从查询中删除
NULL

--and indexstats.index_id > 0

    SELECT     dbschemas.[Name] AS 'Schema',
    dbtables.[Name] AS 'Table',
    dbindexes.[Name] AS 'Index',
    indexstats.avg_fragmentation_in_percent,
    indexstats.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.TABLES dbtables
    ON dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas
    ON dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes
    ON dbindexes.[object_id] = indexstats.[object_id]
    AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID()
and indexstats.index_id > 0
ORDER BY indexstats.avg_fragmentation_in_percent DESC

这些桌子有多大?对于较小的桌子,它根本不起任何作用。为什么还要重建和重组?@AaronBertrand,谢谢。重建比例大于30%,重组比例为5-30%。用户回报是巨大的。请参阅上面的页数,UserRewardActions是一个堆吗?为什么?@AaronBertrand,你是什么意思?很多人都这样,我从来没有听说过任何问题。