DBCC DBREINDEX('?','',80)做什么?

Ser*_*sen 5 sql sql-server sql-server-2008

以下陈述究竟是做什么的?它是否重新索引所有名为'?'的表 填充因子为80%?

EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)"
Run Code Online (Sandbox Code Playgroud)

它确实将查询时间从23秒提高到几乎立即,但我想了解原因.

Bri*_*dge 7

不完全 - 当你使用时sp_MSforeachtable,问号是表名的占位符(因为它依次遍历每个表).

在回复你的评论中的第二个问题时,是的 - 根据DBCC DBREINDEX关于第二个参数的文档:

如果指定了index_name,则必须指定table_name.如果未指定index_name或为"",则重建表的所有索引.

  • 表名,而不是数据库名.还有sp_MSforeachdb,它使用`?`作为数据库名. (2认同)