Я написал хранимую процедуру постраничного поиска с использованием SQL Server 2005. Она принимает несколько параметров, а критерии поиска довольно сложны.
Из-за интерфейсной архитектуры мне нужно иметь возможность возвращать количество результатов, которые вернутся без фактического возврата результатов. Затем передний конец вызовет хранимую процедуру во второй раз, чтобы получить фактические результаты.
С одной стороны, я могу написать две хранимые процедуры - одну для обработки подсчета и одну для обработки фактических данных, но затем мне нужно поддерживать логику поиска как минимум в двух разных местах. В качестве альтернативы я могу написать хранимую процедуру, чтобы она принимала битовый параметр, и на основании этого я либо возвращаю данные, либо просто считаю. Возможно, заполните временную таблицу данными и, если она будет считаться, просто сделайте подсчет из этого, в противном случае сделайте выбор из нее. Проблема здесь в том, что процесс подсчета может быть оптимизирован, так что это требует много дополнительных затрат (нужно получить ненужные столбцы и т. Д.). Кроме того, использование такого рода логики в хранимой процедуре может привести к неправильным планам запросов, так как они переходят туда-сюда между двумя вариантами использования.
Объем данных в системе не слишком велик (всего пара миллионов строк даже для больших таблиц). Одновременно может быть много пользователей.
Что думают люди об этих подходах? Кто-нибудь раньше решал эту проблему так, как я не думал?
Они НЕ МОГУТ взять результаты и рассчитывать одновременно с одного звонка.
Спасибо!