Postgres索引?

时间:2012-01-19 07:46:57

标签: postgresql indexing rdbms

我是postgres的新手。我在一个表中有一个名为host(字符串varchar2)的列,该表有大约2000万行。如何使用索引来优化搜索以查找特定主机。此外,此列将每天更新我需要在特定时间间隔写入触发器索引吗?如果是的话,我该怎么做? (对于我使用Ruby和Rails 3的记录)

3 个答案:

答案 0 :(得分:7)

假设您正在进行完全匹配,您应该只能创建索引并保留它:

CREATE INDEX host_index ON table_name (host)

查询优化器应该自动使用它。

您可能希望指定其他选项,例如要使用的排序规则。

有关详细信息,请参阅PostgreSQL docs for CREATE INDEX

答案 1 :(得分:0)

我建议使用BRIN Index,因为它是从PostgreSQL 9.5引入的,而不是传统的btree索引。

答案 2 :(得分:0)

对于文本搜索,建议您使用GIN或GiST索引类型。

https://www.postgresql.org/docs/9.5/static/textsearch-indexes.html

另一种可能性是,如果您仅在>列中执行完全匹配,即没有不等式比较(<like)和部分匹配(host ,通配符),您可以考虑将 <head> {% block javascripts %} <script type="text" src="path/bootsrtap3-editable.js"></script> {% endblock %} </head> <body> {% page_content %} some content here {% endblock %} {% block javascripts_inline %} <script type="text/javascript"> (function () { customFile.init(); })(); </script> {% endblock %} </body> 转换为哈希整数,以显着加快搜索速度。