相关疑难解决方法(0)

如何确定索引是必需的还是必要的

我一直在我们的 MS SQL 数据库上运行一个自动索引工具(我修改了一个源自 Microsoft 的脚本,该脚本查看索引统计表 -自动自动索引)。从统计数据中,我现在有一个需要创建的索引的建议列表。

编辑: 上述索引从 DMV 获取信息,这些信息告诉您数据库引擎将用于索引的内容(如果它们可用),并且脚本采用 Top x 推荐(通过搜索、用户影响等)并将它们放在表中。

(上面的编辑部分摘自 Larry Coleman 的回答,以阐明脚本在做什么)

由于我是数据库管理员的新手,并且在网上进行了快速搜索,因此我不愿意冒险并盲目添加推荐的索引。但是,由于没有在该领域的经验,我正在寻找一些关于如何确定这些建议是否必要的建议。

我是否需要运行 SQL Profiler,还是检查查询表的代码更好?你还有什么建议吗?

performance index sql-server optimization

119
推荐指数
6
解决办法
13万
查看次数

我在哪里可以找到有关指数策略的一些指导?

我们大多数人可能会同意使用数据库索引是好的。太多的索引和性能实际上会降低。

作为一般规则,哪些字段应该被索引?
哪些字段不应该被索引?
在索引过多和不足之间取得平衡以实现性能改进而不是降级时,使用索引的规则是什么?

index

22
推荐指数
4
解决办法
1425
查看次数

外键多导致删除慢

我的数据库有大约 90 个表。大多数表都有一个UpdatedBy 和AddedBy 列,它们的外键指向用户表。即使在整个数据库中散布适量的数据,这也会导致在清除旧用户记录时的删除过程非常缓慢。

我们的删除查询首先更新当前用户的所有更新/添加引用,然后删除用户记录。由于外键,执行计划显示每个相关表的表扫描。请参阅这篇文章作为我们面临的一个例子

除了用于分析应用程序问题之外,返回添加和更新的指针并没有真正有用。它们很少使用,并且在它们使用时不是良好信息的主要来源。我想知道是否应该一起删除外键约束,或者是否应该将更新审计转移到一个单独的表中,该表保留表名、列、值和用户 ID 的记录,或者是否还有其他一些DBA 社区在这种情况下倾向于采用的普遍接受的方法。

performance foreign-key database-design sql-server

5
推荐指数
1
解决办法
8604
查看次数

表上的更多索引会影响性能吗?

可能的重复:
索引如何影响查询性能?
如何知道何时/是否有太多索引?

  • 在语句中使用一些“where”条件说“X”报告,因此我们在表“T”上创建索引“A”。
  • 在语句中使用一些“where”条件说“Y”报告,因此我们在表“T”上创建索引“B”..
  • 在语句中使用一些“where”条件说“Z”报告,因此我们在表“T”上创建索引“C”。
  • 在语句中使用一些“where”条件说“M”报告,因此我们在表“T”上创建索引“D”。

现在有 4 个索引,这个表有大量的记录。

  1. 当我在这个表中插入或更新行时,索引会影响这些操作的性能吗?
  2. 如果是这样,那么我如何调整这些查询以使其性能良好?

performance index-tuning query-performance

2
推荐指数
1
解决办法
2万
查看次数