微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

database – 在PostgreSQL表中创建多个索引的缺点

读完 documentation on indexes后我想

嘿,因为(在我的情况下)几乎总是从数据库读取比写入它更频繁地执行,为什么不在表中的大多数字段上创建索引?

这是正确的态度吗?除了插入更长时,还有其他任何缺点吗?

当然,索引将仅限于我在SELECT语句条件下实际使用的字段.

解决方法

索引有几个缺点.
首先,他们消耗空间.这可能是无关紧要的,但如果您的桌子特别大,可能会产生影响.
其次,更重要的是,您需要记住索引在INSERTing新行,删除旧行或UPDATEing索引列的现有值时会有性能损失,因为现在DML语句不仅需要修改表的数据,而且指数也是一个.再次,这在很大程度上取决于您的应用程序用例.如果DML非常罕见以至于性能不成问题,那么这可能不是一个考虑因素.
第三(虽然这与我的第一点紧密相关),请记住,每次创建另一个数据库对象时,都会产生额外的维护开销 – 这是您必须偶尔重建的另一个索引,收集统计信息(取决于RDBMS)你正在使用的另一个目标是打击数据字典等.

底线全部归结为您的用例.如果您有经常运行的重要查询,并且可以通过此索引进行改进 – 那就去做吧.如果您在蓝色月亮中运行此查询一次,您可能不希望减慢所有INSERT语句的速度.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐