首页 > 解决方案 > SQLite 索引行组?

问题描述

我有大量的城市、州对加载到 SQLite 表中。我将查询这座城市并了解该州。假设我想查找一个我知道位于德克萨斯州的特定城市。尽管有限制,以下查询大致为 O(n),对吧?

SELECT * FROM cities WHERE state_abbr=? LIMIT 1

是否有某种方法可以按状态对行进行分组或创建二级索引或其他方式,以便 SQLite 知道在哪里可以找到“TX”行并仅在其中搜索?我已经考虑为每个州创建单独的表——这是一个选项——但我希望我可以在这个单一的表中做一些事情来提高查询效率。

在我读过的教程中,创建复合索引后查询不会改变。SQLite 是否只是在同一查询中使用引擎盖下的索引?

标签: pythonsqlsqlite

解决方案


为什么不只是有一个复合索引?

create index cities_state_abbr_city on cities(state, city);

推荐阅读