postgresql – 在WHERE子句中包含大量列的查询的索引
为公寓网站建立搜索引擎,我不知道如何索引公寓表.
查询示例: > … WHERE city_id = 1 AND size> 500和房间= 2 如您所见,列可能会有很大差异,WHERE子句中的列数最多可为10,甚至可能更多. >我应该索引所有这些吗?
你必须弄清楚你将在这个查询中使用什么WHERE子句,每个条件发生的频率以及每个条件的选择性.
>除非必须,否则不要为很少发生的查询编制索引. 例如,使用上面的查询,如果它们都是频繁的并且所有列都是选择性的,那么这些索引就会很好: ... ON apartments (city_id,rooms,size) ... ON apartments (area_id,ad_type,price) ... ON apartments (area_id,published_at) 这些索引也可以用于WHERE子句,其中只包含area_id或city_id. 索引太多是不好的. 如果上述方法会导致索引太多,例如因为用户可以为WHERE子句选择任意列,所以最好对各个列进行索引,或者偶尔对经常组合在一起的列进行索引. 这样PostgreSQL就可以选择一个位图索引扫描来组合一个查询的多个索引.这比常规索引扫描效率低,但通常比顺序扫描更好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |