我有带有城市列表(> 1M)的postgreSQL表,我需要通过像'abc%'这样的模式来搜索这个表。我在列上创建了 B 树索引city.name
,这就是我得到的:
EXPLAIN SELECT * FROM city WHERE NAME ~~* 'Мос%'
Seq Scan on city (cost=0.00..44562.62 rows=117 width=131)
以及确切的选择:
EXPLAIN SELECT * FROM city WHERE NAME = 'Москва'
Index Scan using city_name_idx on city (cost=0.43..12.33 rows=2 width=131)
有什么方法可以使用标准索引在第一次选择时获得良好的性能?
我正在使用 Symfony2/Doctrine2,所以在这里实现特定于 db 的东西并不是很容易(而且我不想)。