我可以这个查询SELECT COUNT(*) OVER(), id, name, date... FROM table WHERE user_id = 1 LIMIT 20, OFFSET 0
我需要分页计数,这是如何工作的?count 是为每一行计算还是只计算一次?
它是否会影响索引使用,因为我知道函数有时会影响索引使用,但主要是在 where 子句中。
这样做是否有任何性能损失,而不是 2 个单独的查询(计数然后数据检索)?我不会做一个子查询,因为它会为每一行运行。
谢谢
使用窗口函数比运行两个查询更有效。对索引使用没有可能的影响。
窗口函数在生成结果集之后计算,但在LIMIT
和之前OFFSET
。结果将作为额外的列添加到每一行。
我看不出您使用此窗口函数计算的总计数对分页有何用处。
顺便说一句,如果没有子句,使用LIMIT
和OFFSET
是毫无意义的ORDER BY
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句