我需要从10MM行表中拉回前300行,并获取匹配记录总数的计数。
我可以在两个查询中执行此操作,例如:
SELECT * FROM table WHERE field = value LIMIT 300;
SELECT count(*) FROM table WHERE field = value;
或者我可以使用OVER():
SELECT *, COUNT(*) OVER() AS total FROM table WHERE field = value LIMIT 300;
哪种效率最高?我不关心是否需要运行两个查询,我是最有效的解决方案之后。我不是专家,我试图运行“解释”,但这对我来说没有多大意义。这是在Amazon Redshift上运行的。
答案 0 :(得分:0)
如果您的SortKey是时间戳字段,则运行效率最高的是
select *
from(
select * , count(*) over() as total,
row_number () over(order by timestamp) as rank
from table
where filed =value)
where rank<301