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

读完 documentation on indexes后我想

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

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

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

解决方法

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

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

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...