基于entity_id和time列优化唯一记录查询的高效方案求助
高效检索基于entity_id和time的唯一记录问题
我有一个存储在test_table表中的大型数据集,包含entity_id、time、group_id列,需要高效检索基于entity_id和time的唯一记录。
测试表结构与数据
表结构与插入语句
CREATE TABLE test_table ( entity_id int, time BIGINT, group_id INT ); INSERT INTO test_table (entity_id, time, group_id) VALUES (1, 1709049203345, 10086), (2, 1708605859234, 435146), (2, 1708605859234, 435146), (4, 1707815681971, 10086), (5, 1707291871198, 10086), (5, 1707291871198, 10086);
数据表格
| entity_id | time | group_id |
|---|---|---|
| 1 | 1709049203345 | 10086 |
| 2 | 1708605859234 | 435146 |
| 2 | 1708605859234 | 435146 |
| 4 | 1707815681971 | 10086 |
| 5 | 1707291871198 | 10086 |
| 5 | 1707291871198 | 10086 |
已尝试的低效方法
方法一:带ROW_NUMBER()的CTE
WITH cte AS ( SELECT entity_id, time, group_id, ROW_NUMBER() OVER (PARTITION BY entity_id, time ORDER BY entity_id) AS row_num FROM test_table ) SELECT entity_id, time, group_id FROM cte WHERE row_num = 1;
方法二:DISTINCT ON子句
SELECT DISTINCT ON (time, entity_id) * FROM test_table ORDER BY time, entity_id;
以上两种方法处理速度均过慢,我无该数据库的写入权限,仅能执行SELECT语句,请问是否有更高效的实现方法?
内容的提问来源于stack exchange,提问作者executable
相关产品推荐
相关产品推荐

