Пейджинг набора результатов запроса - PullRequest
1 голос
/ 10 июля 2010

Greetings Overflowers,

Мне интересно, есть ли способ сделать запрос к какой-либо базе данных и получить только определенное окно в полном наборе результатов без необходимости фактически просматривать их все.

Например, если я запрашиваю свою базу данных и мне нужны только результаты с номерами от 100 до 200, будет ли база данных извлекать все результаты (скажем, от 0 до 1000), которые соответствуют моему запросу, а затем отфильтровывать их, чтобы исключить что-либо за пределами моегоуказанная рамка окна?

На самом деле, я работаю над проблемой полнотекстового поиска (не совсем реляционных БД).

Так как насчет Google и других поисковых систем, они получают полный результат?затем отфильтровать или они имеют прямой доступ только к необходимой рамке окна?

Спасибо всем!

1 Ответ

0 голосов
/ 24 июня 2011

На ваш вопрос, вероятно, лучше всего ответить в двух частях.

  • Для базы данных (традиционной, реляционной), выполняемый запрос содержит ряд предложений «где», которые будутзаставить механизм базы данных ограничить число результатов, которые он возвращает.Поэтому, если вы укажете предложение where, которое в основном ограничивает 2 значения первичного ключа,

    выберите * Из таблицы, где id> 99 и id <201; </p>

, выполучите то, что вы просите.

  • Для поисковой системы запрос, который вы делаете для получения результатов, всегда будет разбиваться на страницы - при использовании различных методов все результаты будут предварительно разбиты на страницыи некоторые будут кэшированы.Другие страницы будут созданы по запросу.Так что, если вы хотите страницы 100-200, то вам нужно выбрать только те, которые вам нужны.

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

...