【问题标题】:What is SQL Server's equivalent to MySQL's OPTIMIZE command?什么是 SQL Server 等效于 MySQL OPTIMIZE 命令?
【发布时间】:2016-06-01 13:59:11
【问题描述】:

对于 SQL Server,是否有与 MySQL 的 OPTIMIZE 命令等效的命令?

【问题讨论】:

  • 我不了解mysql,也不想研究这个很长时间,但它听起来与重组和重建索引非常相似。 msdn.microsoft.com/en-us/library/ms189858.aspx
  • 有对索引进行碎片整理的能力,但我认为没有同义命令,因为事实表数据是根据其聚集索引的配置方式存储的,并且页面数据在插入时被打乱。跨度>

标签: mysql sql-server equivalent


【解决方案1】:

这取决于:

  1. 如果当前表有聚集索引,那么ALTER INDEX ALL ON [Schema].[Table] REBUILD 是一种解决方案。

如果指定了 ALL 并且基础表是堆,则重建 操作对表没有影响。任何非聚集索引 与表关联的被重建。

(source)

因此,对于堆表,此语句也不会重建堆结构。关于此解决方案,请参阅All 部分中的所有警告(如果表有一个或多个,则使用此操作指定 ALL 失败)。

但是

  1. 如果当前表是堆表(它没有聚集索引),那么我会使用ALTER TABLE [Schema].[Table] REBUILD 在最后一种情况下,对于堆表,此语句会重建堆结构以及所有非聚集索引 (source)。

【讨论】:

    【解决方案2】:

    在 T-SQL 中,您可以像这样重建和重组索引:

    ALTER INDEX ALL ON [dbo].[SomeTable] REBUILD
    

    您可能还想查看这篇关于指定索引填充因子的 MSDN 文章。

    https://msdn.microsoft.com/en-us/library/ms177459.aspx

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 2010-11-19
      相关资源
      最近更新 更多