2010-05-25 4 views
1

У меня есть приложение, где я создаю большой запрос SQL динамически для SQL Server 2008. Этот запрос основан на различных критериях поиска, которые пользователь мог бы дать такие, как поиск по ФАМИЛИЯ, ИМЯ, ПЛА и т.д.Как предсказать количество строк набора результатов?

Это требование что если пользователь дает условие, из-за которого сформированный запрос мог бы возвращать много строк (настраиваемый для максимальных N строк), тогда приложение должно отправить сообщение обратно пользователю, заявив, что ему нужно уточнить свой поисковый запрос, как существующий запрос вернет слишком много строк.

Я бы не хотел возвращать, скажем, 5000 строк клиенту, а затем отбросить эти данные, чтобы показать пользователю ошибку. Каков эффективный способ решения этой проблемы?

ответ

4

Почему бы не просто показать первые N строк, а сообщение? ограничьте строки, возвращенные в N + 1, и если количество возвращенных строк будет> N, тогда покажите сообщение :)

, если вы просто хотите проверить, сколько строк должно быть возвращено запросом, тогда select count(id) (или некоторое имя столбца) вместо select *

+1

Мы ограничиваем этот путь тоже. – gbn

+0

Требование не показывать пользователю никакого результата, если запрос возвратит слишком много строк. И проблема с выполнением подсчета заключается в том, что запрос может стать огромным с несколькими INTERSECTS, UNIONS и т. Д .... и он отправляется из .NET в DB. Таким образом, вычисление будет означать, что мне нужно отправить полный запрос один раз с помощью count, а если он будет в пределах ограничений, то отправьте запрос снова SQL. Обеспечивает требование двойной пропускной способности. Любые другие идеи? –

+0

нет других идей. либо вы возвращаете фактические данные и используете их, либо сначала возвращаете счет, а затем снова запрашиваете данные. вы можете сделать это в хранимой процедуре, но все равно придется делать 2 запроса, если счетчик oedo

Смежные вопросы