Sql server SQL SERVER中的超大表应该如何索引?

Sql server SQL SERVER中的超大表应该如何索引?,sql-server,Sql Server,我们有一个很大的表(4.5亿行,包含34列数字或日期时间数据),目前有十几条推荐的查询路径。该表目前有17个索引,我无权更改该表的结构,尽管我能够提供索引策略 我看到的第一个问题是没有聚集索引,尽管表有一个由2列组成的唯一键。我在想我可以把它改成集群,然后处理其他索引。由于查询表有十几种常用方法,所以我认为为每个查询方法添加索引将是一件好事。假设查询表的一种常用方法是通过CustomerId,我会在customer Id上添加一个索引。虽然这是一个非聚集索引,但效率仍然相当低,对吗?如果我让该索

我们有一个很大的表(4.5亿行,包含34列数字或日期时间数据),目前有十几条推荐的查询路径。该表目前有17个索引,我无权更改该表的结构,尽管我能够提供索引策略


我看到的第一个问题是没有聚集索引,尽管表有一个由2列组成的唯一键。我在想我可以把它改成集群,然后处理其他索引。由于查询表有十几种常用方法,所以我认为为每个查询方法添加索引将是一件好事。假设查询表的一种常用方法是通过CustomerId,我会在customer Id上添加一个索引。虽然这是一个非聚集索引,但效率仍然相当低,对吗?如果我让该索引包含CustomerId和聚集索引中的2列,会怎么样?这会使SQL Server在其执行计划中更加高效,还是说这是一项无用的任务?

仅当数据根据聚集列顺序插入时才更改为使用聚集索引。如果使用的列不唯一,数据库将向表中添加一个4字节的唯一列,因此请确保它们是唯一的


仅当数据根据聚集列顺序插入时才更改为使用聚集索引。如果使用的列不唯一,数据库将向表中添加一个4字节的唯一列,因此请确保它们是唯一的


我认为最好的策略总是从在数据库上运行SQL Server Profiler一段时间开始。一旦您在文件或专用跟踪表中存储了一个合适的跟踪,您就可以运行SQL Server数据库优化顾问,根据数据库的实际使用情况而不是根据您对数据库上的查找行为的看法来获取实际的统计信息和索引建议

实际上,可能存在这样一种情况:表上存在某些昂贵的查询,这些查询目前完全绕过了您不知道的现有配置索引。该工具将帮助您找到可能的最佳组合

以下是实践中的一个例子:


我认为最好的策略总是从在数据库上运行SQL Server Profiler一段时间开始。一旦您在文件或专用跟踪表中存储了一个合适的跟踪,您就可以运行SQL Server数据库优化顾问,根据数据库的实际使用情况而不是根据您对数据库上的查找行为的看法来获取实际的统计信息和索引建议

实际上,可能存在这样一种情况:表上存在某些昂贵的查询,这些查询目前完全绕过了您不知道的现有配置索引。该工具将帮助您找到可能的最佳组合

以下是实践中的一个例子:


聚集索引对于范围查询(其中KeyColumn介于(…)之间)具有优势

在CustomerId示例中,添加主列绝对没有好处。非托管索引将包含对集群页面的项引用


事实上,你的问题并不包含任何可以作为好建议基础的信息。您最好从分析入手,找出任何瓶颈。

聚集索引对于范围查询(其中KeyColumn介于(…)之间)具有优势

在CustomerId示例中,添加主列绝对没有好处。非托管索引将包含对集群页面的项引用


事实上,你的问题并不包含任何可以作为好建议基础的信息。您最好从分析入手,找出任何瓶颈。

索引用于高效的数据检索

您应该查看针对大表运行的查询,并找出哪些列使用最多

以下是out索引的一些经验法则:

  • 主键:它们通常是聚集索引
  • 外键:联接中使用的列。这可以是每列的索引,也可以是复合索引,具体取决于您的需要
  • WHERE子句中经常使用的列
  • 在仓库环境中,datetime列是很好的聚集索引候选项,因为它们在WHERE子句中使用非常频繁

    那么你是怎么想出来的

    跑。这将帮助您找到针对您的表运行的查询。然后,通过查看查询的运行次数和成本,找出在给定时间段内使用最多资源的查询。遵循以下两条路径中的一条,以获得更好的索引

    • 查看以确定所需的索引
    • 使用帮助解决t

    索引用于高效的数据检索

    您应该查看针对大表运行的查询,并找出哪些列使用最多

    以下是out索引的一些经验法则:

  • 主键:它们通常是聚集索引
  • 外键:联接中使用的列。这可以是每列的索引,也可以是复合索引,具体取决于您的需要
  • WHERE子句中经常使用的列
  • 在仓库环境中,datetime列是很好的聚集索引候选项,因为它们在WHERE子句中使用非常频繁

    那么你是怎么想出来的

    跑。这将帮助您找到针对您的表运行的查询。然后,通过查看查询的运行次数和成本,找出在给定时间段内使用最多资源的查询。遵循以下两条路径中的一条,以获得更好的索引

    • 查看以确定所需的索引
    • 使用帮助解决t

    +1让调整顾问决定需要什么