包含两列(transaction_id,user_id)的表,两者都带有索引。表中约有10M条记录。
transaction_id是唯一的
user_id上的transaction_id计数从极少数到数千不等。
我需要找到max(transaction_id),关于必须忽略给定用户的top25(desc命令)transaction_id。
例如,将不会选择具有21个transaction_id的user_id。具有47个事务的user_id将返回事务26。
我通过使用偏移,限制等尝试了几种方法,但它们似乎都很慢(成本非常高)。
答案 0 :(得分:0)
你有一个窗口功能,即
select user_id, nth_value(transaction_id, 26) over (
partition by user_id order by transaction_id
)
from your_table;
应该充足