我有一个Postgres数据库,它有2列不是主键(也不能是主键),但被大量搜索,并与其他表中的2列进行相等比较。
我相信这是向我的表中添加索引的完美案例。我以前从未在数据库上使用过索引,所以我正在尝试学习做这件事的正确方法。
我了解到,有多种类型的索引可供我选择。如何确定哪种方法对我的数据库最有效?另外,正确的方法是创建涵盖两个列的单个索引吗?
发布于 2010-12-02 00:48:23
Postgres支持B-树、R-树、哈希、GiST和GIN索引类型。B树索引是最常见的,并且适合最常见的场景。以下是语法:
CREATE INDEX idex_name ON table_name USING btree(column1, column2);这里是createindex文档,这里是postgres中不同indextypes的更多信息。
您应该使用哪种类型的索引取决于您要执行的操作类型。如果你只是想要进行相等性检查,那么哈希索引是最好的。对于大多数常见的操作(例如比较、模式匹配),应该使用B树。我个人从未使用过GiST或杜松子酒索引。有没有导师在外面?
文档描述了所有这些类型。他们可以比我更好地帮助您:)
希望这能有所帮助。
发布于 2010-12-02 01:12:55
还要尝试理解queryplanner,因为PostgreSQL的这一部分必须与索引一起工作。解释分析对于优化您的查询是必不可少的。
https://stackoverflow.com/questions/4326625
复制相似问题