我拥有巨大的850万行表,包括所有城市和其他数据。当我需要像伦敦这样的特定城市时,需要花费大量时间进行查询。我知道从哪个国家/地区获取数据。
SELECT * FROM location_cities
WHERE name LIKE 'London%'
AND iso = 'GB'
当我知道国家/地区,如GB,FR,US等时,是否有可能提高此查询速度?
答案 0 :(得分:3)
是。您想在location_cities(iso, name)
上添加索引。这是语法:
create index location_cities_iso_name on location_cities(iso, name);
注意,当表达式不以通配符开头时(如示例所示),这对like
最有效。如果您需要like '%York'
等功能,则可能需要查看全文索引。
答案 1 :(得分:0)
您应该尝试分区 - 在本例中是“iso”或查询中经常使用的其他参数。以下是对分区如何工作以及它可带来哪些好处的详细描述: