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
我有一个 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