什么是创建数据库索引的一些最佳做法和“经验法则”?
我有一个应用程序,循环数据库表中的大量记录,并对该数据库中的记录执行一些SQL和.Net操作(目前我在PostgreSQL上使用Castle.ActiveRecord).
我在几个feilds上添加了一些基本的btree索引,正如你所期望的,SQL操作的性能大大增加.想要充分利用dbms的性能,我想对我所有项目的索引进行一些更好的教育选择. 我明白,插入时会导致性能下降(因为数据库需要更新索引以及数据),但是我应该在创建数据库索引时考虑哪些建议和最佳实践?如何最好选择一组数据库索引(经验法则)的feilds / fields的组合? 此外,如何最好地选择要用作聚簇索引的索引?而当涉及到访问方法时,在什么条件下,我应该使用一个哈希或一个gist或杜松子酒的btree(还有什么呢?). 解决方法我的一些经验法则:>索引所有主键(我认为大部分RDBMS在创建表时都这样做). >查询缓慢 >在表上填充大量数据时运行统计信息. 如果查询速度较慢,请查找执行计划: >如果一个表的查询只使用很少列,将所有的列都放入一个索引中,那么可以帮助RDBMS只使用索引.>不要浪费资源索引小表(数百条记录).>从高基数到较低的顺序索引多列.这意味着,首先是具有更多不同值的列后跟不太明显的值的列.>如果查询需要访问超过10%的数据,则正常的全扫描优于索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |