Мой коллега и я обсуждали сегодня, какой способ является более быстрым и эффективным способом подсчета по списку записей.
По сути, сценарий заключается в том, что, когда мы хотим извлечь список записей из процедуры, быстрее / эффективнее вычислять общее количество записей из процедуры , когда мы выбираем список записей в одном запросе или лучше сначала получить список записей, а затем снова вызвать COUNT для той же процедуры (в 2 вызовах).
Какой из этих примеров более эффективен? Почему?
Пример 1
SELECT *, COUNT(1) OVER() AS total_rows FROM some_procedure();
Возвращает столбец total_rows
в каждой строке вместе с остальными столбцами.
-или-
Пример 2
SELECT * FROM some_procedure();
SELECT COUNT(*) FROM some_procedure();
Этот способ требует 2 вызова, но не вычисляет столбец total_rows
.
Кроме того, рассчитывается ли COUNT в Примере 1 для каждой записи или только один раз?