我是postgres的新手。我在一个表中有一个名为host
(字符串varchar2)的列,该表有大约2000万行。如何使用索引来优化搜索以查找特定主机。此外,此列将每天更新我需要在特定时间间隔写入触发器索引吗?如果是的话,我该怎么做? (对于我使用Ruby和Rails 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>
转换为哈希整数,以显着加快搜索速度。