我试图从sqlite数据库中提取统计信息。我基本上收集了每个列的所有可能变体和变体计数,而主键按group_id
列分组(许多skus
属于每个group_id
)。
为清楚起见假设一个这样的表:
sku, group_id, column_a, column_b
查询(删节)如下所示:
SELECT
group_id,
count(sku),
group_concat(distinct column_a),
count(distinct column_a),
group_concat(distinct column_b),
count(distinct column_b),
FROM
my_table
GROUP BY
group_id
ORDER BY
count(sku) DESC;
我的表有800万行和20列。
目前此查询的未删节版本永远不会完成(至少运行20分钟)。
我已在group_id
和sku
列添加了索引。
修改 我的索引是这样的:
CREATE INDEX index_group_id ON products(group_id);
CREATE INDEX index_sku ON products(sku);
CREATE INDEX index_group_id_sku ON products(group_id,sku);
查询计划
0|0|0|SCAN TABLE products USING INDEX index_group_id_sku
group_ids数量
sqlite> select count(distinct group_id) from products;
6426446
skus数量(主键 - 行数)
sqlite> select count(sku) from products;
8395475