SQLite:如何获取 COUNT 的 ORDER 索引

SQLite: How to fetch the ORDER index of COUNT

我有一个 SQLite 数据库,其中包含一组用户消息的列表。 我想通过计算用户发送的消息数量来获得用户的“排名”。

目前我正在做这个

SELECT user_id, COUNT(*) as count 
FROM message
group by user_id
ORDER BY count DESC

它会 return 像这样:

- user_id count
1 2072040132 61877
2 1609505732 40514
3 1543287045 34735
4 203349203 30570
5 842634673 29651
6 1702633101 29185
7 1978947042 27728
8 1929648593 27025
9 1069841429 17944
10 1437208364 17344
11 ... ...

喜欢的用户1609505732是前2,1702633101是前6。

但是我的数据库有超过 200 万行,要获取所有列表太慢了。 我想知道是否有任何方法可以只获取它的顺序。

像这样:

- user_id order count
1 1702633101 6 61877

id=1702633101 的用户是前 6 名。那会快很多。

感谢您花时间解答我的问题,我似乎无法在互联网上的任何地方找到答案。

为了提高查询速度,我会考虑物理化聚合视图,示例如下:


CREATE Table as tbl_aggregate()
Id INTEGER PRIMARY KEY AUTOINCREMENT
, user_id NVARCHAR
, count INT;



INSERT INTO tbl_aggregate 
SELECT user_id, COUNT(*) as count 
FROM message
group by user_id
ORDER BY count DESC;

Select * from tbl_aggregate
Where Id = 6

Select top 10 * from tbl_aggregate