1

我似乎找不到一个直接的答案。我有以下列:

ZipCode
StateAbbreviation
CountyName

我将ZipCode单独或StateAbbreviation/CountyName组合查询表。我Id定义了一个 PK 列,所以这是我的聚集索引。

什么是推荐的方法来实现更好的性能/效率?考虑到我将如何搜索表,我应该创建什么样的索引?

4

2 回答 2

1

首先 - 运行您的应用程序,看看它在没有任何索引的情况下是否足够快。

其次 - 如果在某些地方速度很慢,请查找此代码生成的 SQL 工作负载 - 你有什么样的查询?尝试在其中一个ZipCode或一个上添加索引(StateAbbreviation, CountyName),然后再次运行您的应用程序并查看它的执行情况。

如果那个索引解决了你的问题 -> 去享受你的业余时间吧!:-)

如果没有:添加第二个索引,看看是否有帮助。

不要仅仅因为可以就过度使用索引!一次一个,只有在疼的时候。不要只是提前添加索引 - 仅在遇到性能问题时添加。要查看它是否有帮助,您需要测量、测量和再次测量,并与之前的测量基线进行比较。

非聚集索引的使用出奇地少——您的查询需要恰到好处,非聚集索引才能被 SQL Server 查询优化器考虑。如果表“太小”,则首选表扫描。如果您SELECT *一直使用 - 您的非聚集索引也可能会被忽略。

于 2013-12-05T06:45:20.710 回答
0

如果确实添加了索引,则应使用与查询相同的顺序在索引中对列进行排序。如果您不这样做,则无法保证会使用该索引。索引 1) 邮政编码;索引 2) 州缩写,CountyName。

正如@marc_s 所说,索引应该在必要时使用,因为它们在修改/插入/删除行时会产生一些额外的开销。但是,如果它们是直接引用表,那么索引的唯一负面影响就是它使用的磁盘空间。我通常发现它的价值低于没有索引。

于 2013-12-05T06:48:38.947 回答