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 万行,差异更加明显。
我在 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 万行,差异更加明显。