我有一个Postgres数据库,其中有两列不是主键(也不能是主键),但会被大量搜索,并与其他表中的两列进行相等性比较.
我相信这是向我的表中添加索引的完美 case .我以前从未在数据库上使用过索引,所以我正在try 学习正确的方法.
我了解到有多种类型的索引我可以 Select .如何确定哪种方法对我的数据库最有效?正确的方法是创建一个覆盖两列的索引吗?
我有一个Postgres数据库,其中有两列不是主键(也不能是主键),但会被大量搜索,并与其他表中的两列进行相等性比较.
我相信这是向我的表中添加索引的完美 case .我以前从未在数据库上使用过索引,所以我正在try 学习正确的方法.
我了解到有多种类型的索引我可以 Select .如何确定哪种方法对我的数据库最有效?正确的方法是创建一个覆盖两列的索引吗?
Postgres支持B树、R树、哈希、GiST和GIN索引类型.B树索引是最常见的,并且适合最常见的场景.以下是语法:
CREATE INDEX idex_name ON table_name USING btree(column1, column2);
这是createindex个文档,这是关于postgres中不同indextypes的更多信息.
应该使用什么类型的索引取决于要执行的操作类型.如果你只是想判断等式,那么哈希索引是最好的.对于最常见的操作(例如比较、模式匹配),应使用B-树.我个人从未使用GiST或GIN索引.有大师吗?
文档描述了所有这些类型.他们比我更能帮助你:)
希望这有帮助.