Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 列索引的最佳db策略是什么?_Sql_Sql Server_Database Design_Query Optimization - Fatal编程技术网

Sql 列索引的最佳db策略是什么?

Sql 列索引的最佳db策略是什么?,sql,sql-server,database-design,query-optimization,Sql,Sql Server,Database Design,Query Optimization,两个例子是: 将在查询where子句(where Name=“xtz”)中显示的列 要在查询中对其排序的列 这是正确的吗?还有其他重要的用例吗 SQL Server能否根据使用模式推荐要编制索引的字段?这些是编制索引的唯一原因 因为“使用模式”很难量化——而且它是多种多样的——所以不可能对索引做出全面的陈述 大量更新(或删除)的索引成本大于收益 很少使用的索引可能比使用它的少数查询维护成本最高 它需要积极的实验来确定索引的组合是否适合数据库的当前使用模式。这意味着查看查询执行计划以查看使用了什么

两个例子是:

  • 将在查询where子句(where Name=“xtz”)中显示的列
  • 要在查询中对其排序的列
  • 这是正确的吗?还有其他重要的用例吗


    SQL Server能否根据使用模式推荐要编制索引的字段?

    这些是编制索引的唯一原因

    因为“使用模式”很难量化——而且它是多种多样的——所以不可能对索引做出全面的陈述

    大量更新(或删除)的索引成本大于收益

    很少使用的索引可能比使用它的少数查询维护成本最高


    它需要积极的实验来确定索引的组合是否适合数据库的当前使用模式。这意味着查看查询执行计划以查看使用了什么,查看慢速查询以查看可能缺少的内容。

    您将知道您的性能是否不够好

    你提到的事情已经是解决方案的一部分了。除此之外,我还要补充:

    • 在子表中的任何外键列上放置索引
    这在执行连接时非常有帮助,而且它不是由SQL Server自动完成的(与常见的城市神话相反,SQL Server从未自动在外键上放置任何索引)

    是的,从SQLServer2008开始,如果您在SQLServerManagementStudio中的查询中包含实际执行计划,它可以为您提供一些关于哪些索引可能有用的提示

    但要小心:这样做只需调整一个SQL查询。您可以随时调整它,但仍然会有糟糕的性能,因为一个查询往往不是全部,而调整一个查询以使其性能非常好可能会对系统的其余部分产生负面影响

    要真正了解要调整的内容以及如何调整,您需要使用SQL Server profiler跟踪,在系统使用的一天中的不同时间段捕获实际使用数据,并检查这些数据

    了解SQL Server评测:


    Marc

    排序和查询是设计时几乎所有索引的“必须”。对于一个表,您必须小心使用哪一个索引作为集群索引,以免引入插入/更新延迟


    显然,您将发现是否需要更多索引来跟踪生产中的系统的性能,并检测哪些sql命令的执行时间更长。

    如果查询速度慢,最好开始添加索引。对于大多数中小型数据库,花时间找出要尽早应用的索引并不能很好地利用您的时间。

    对于更新次数最少、冗余数据较少的列,应将其设置为索引。
    若并没有存储问题,那个么数据库应该被大量索引。

    你们应该几乎总是索引外键(主键是自动索引的,而FK不是)。FK通常用于联接,因此应该编制索引。

    外键上的索引也可以加快检查外键约束的速度,例如,如果删除了引用的行。