выберите записи для каждой страницы в dataobjects.net - PullRequest
0 голосов
/ 15 августа 2011

У меня есть много записей в базе данных, и у меня есть элемент управления, который просматривает эти записи. Как выбрать записи для каждой страницы? Например, мне нужно выбрать записи от 51-й записи до 100-й записи. И я не могу использовать выражения LINQ. Я использую dataobjects 3.9. Итак, я начинаю как

Query q = new Query("select SomeClass objects");

1 Ответ

1 голос
/ 15 августа 2011

Используйте этот запрос:

Query q = new Query("select top 100 SomeClass objects");

Насколько я помню, нет способа указать .Skip -подобное условие в случае с DO39, поэтому вы должны сделать это вручную (например, применив .Skip к имеющемуся у вас перечислению).

В этом случае очевидное влияние на производительность, но это не существенно с точки зрения вычислительной сложности. Единственный эффект этого заключается в том, что SQL Server будет отправлять больше строк клиенту, но все остальные задачи, которые он должен выполнять, остаются прежними.

Пример, иллюстрирующий это:

если вы попросите Google показать вам 1000-ю страницу результатов, это все равно будет найти все документы, относящиеся к вашему запросу, вычислить рейтинг соответствия для Сортируйте его, чтобы получить по крайней мере первые 1000 страниц с лучшими соответствовать рангу и только после всей этой работы он сможет дать вам 1000-я страница.

Так что, если есть 1 000 000 000 000 документов, вычислительные сложность отправки 10К строк клиенту крошечная по сравнению со всей другой работой.

Также обратите внимание, что вся идея разбивки на страницы заключается в том, чтобы показать крошечную долю всего набора данных. Так что, если ваш пользователь должен разбить на страницы, например 1000-я страница, что-то не так с дизайном. Есть только два случая:

  • Пользователь должен получить небольшую часть данных (т. Е. Выполнить поиск)
  • Пользователь должен получить все данные (например, чтобы сделать резервную копию)

Промежуточных падежей нет.

...