加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:13:58 所属栏目:MsSql教程 来源:网络整理
导读:我有一个应用程序,循环数据库表中的大量记录,并对该数据库中的记录执行一些SQL和.Net操作(目前我在PostgreSQL上使用Castle.ActiveRecord). 我在几个feilds上添加了一些基本的btree索引,正如你所期望的,SQL操作的性能大大增加.想要充分利用dbms的性能,我想对我
我有一个应用程序,循环数据库表中的大量记录,并对该数据库中的记录执行一些SQL和.Net操作(目前我在PostgreSQL上使用Castle.ActiveRecord).

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

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

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

解决方法

我的一些经验法则:

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读