【发布时间】:2015-10-08 11:30:41
【问题描述】:
我在 SQL Server 中有一个包含 700 000 条记录的表。但是,当我在 where 子句中使用 3 到 4 个条件进行简单的选择查询时,最多需要 45 秒。我已经有 2 个非聚集索引和 1 个聚集索引。所以我想在该表中再添加 2 个非聚集索引。通过这样做,我的表将具有我在查询的 where 子句中使用的所有列的索引。我也这样做了,发现结果比以前的要快得多。
可以有 5 到 6 个非聚集索引会损害数据库性能还是影响不大?
我的查询结构是
SELECT ( SOME COLUMNS) FROM MyTable
WHERE COL1 = @Id AND COL2 >= @SomeDate AND (NOT (COL3 = 1)) AND
(COL4 <= @SomeOtherDate)
表格有 35 列。
【问题讨论】:
-
视情况而定。只要有必要,就有 5-6 个索引是可以的。
-
取决于手段?如何 ?这就是我要问的。有哪些情况?
-
因此,这是有争议的,取决于各种因素。答案就像@lad2025 说“这取决于”。我有多达 5-10 个索引的表,它的运行速度非常快。更多详细信息,请在线查看覆盖指数。
-
当您对查询进行故障排除时,您还应该查看查询执行计划 - 这将告诉您资源被花费在哪里,并且可以让您了解应该关注的地方。
-
更多索引很少会损害
SELECT的性能,因为如果不使用它们就会被忽略。它们确实会影响INSERT和UPDATE的性能,因为它们需要在基础数据更改时进行更新。当然,它们也会占用存储空间。
标签: sql sql-server sql-server-2008 indexing