什么是创建数据库索引的一些最佳做法和“经验法则”?

前端之家收集整理的这篇文章主要介绍了什么是创建数据库索引的一些最佳做法和“经验法则”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,循环数据库表中的大量记录,并对该数据库中的记录执行一些sql和.Net操作(目前我在Postgresql上使用Castle.ActiveRecord).

我在几个feilds上添加了一些基本的btree索引,正如你所期望的,sql操作的性能大大增加.想要充分利用dbms的性能,我想对我所有项目的索引进行一些更好的教育选择.

我明白,插入时会导致性能下降(因为数据库需要更新索引以及数据),但是我应该在创建数据库索引时考虑哪些建议和最佳实践?如何最好选择一组数据库索引(经验法则)的feilds / fields的组合?

此外,如何最好地选择要用作聚簇索引的索引?而当涉及到访问方法时,在什么条件下,我应该使用一个哈希或一个gist或杜松子酒的btree(还有什么呢?).

解决方法

我的一些经验法则:

>索引所有主键(我认为大部分RDBMS在创建表时都这样做).
>索引所有外键列.
>仅在以下情况下创建更多索引:

>查询缓慢
>你知道数据量会显着增加.

>在表上填充大量数据时运行统计信息.

如果查询速度较慢,请查找执行计划:

>如果一个表的查询只使用很少列,将所有的列都放入一个索引中,那么可以帮助RDBMS只使用索引.>不要浪费资源索引小表(数百条记录).>从高基数到较低的顺序索引多列.这意味着,首先是具有更多不同值的列后跟不太明显的值的列.>如果查询需要访问超过10%的数据,则正常的全扫描优于索引.

猜你在找的MsSQL相关文章