Select SQLite 中的低基数列有很多行

Select many rows on low-cardinality column in SQLite

我在 SQLite 中有一个 table 有很多行,我经常需要 select 基于二进制列的所有行,平均拆分(比如 male/female 例如)。查询中没有其他必须满足的条件。我知道在这种情况下索引不好,但是有没有其他方法可以加快速度?排序 table 之类的东西?除了制作两个单独的 table 我猜。

编辑:如果 SQLite 中没有,是否可以在另一个基于 SQL 的 RDBMS 中使用?

I've understood that it's not good to index in this case

在这些事情上总是要考虑利弊,所以真正重要的是你给每一个的权重。换句话说,通常建议自己进行尽职调查,而不是依赖别人的经验法则。

在我对具有 100 万行的 SQLite 数据库的计时中,二进制列在 0 和 1 之间均匀分割,SELECT COUNT(*) WHERE binary = 0; 使用索引显着加快了速度。以下是 u+s 时间:

   without an index: 0.06 secs
   with an index:    0.04 secs

对于 1000 万行,差异更加明显。