Почему разбиение на страницы является настолько дорогим ресурсом?

T может быть любым типом. Я хочу, чтобы иметь возможность создавать экземпляры ICollectionWrapper без необходимости регистрировать все возможные комбинации T.

blockquote>

Это то, для чего нужны реестры. Некоторые IOC называют метод как RegisterGeneric, чтобы сделать его самоочевидным (например, autofac), но единство сохраняет его только перегрузкой RegisterType .

container.RegisterType(typeof(ICollectionWrapper<>), typeof(CollectionWrapper<>), new TransientLifetimeManager());

Также обратите внимание, что ваш инъекционный метод имеет несколько конструкторов. Это само по себе считается анти-шаблоном .

Если вы исправите несколько объектов-конструкторов, над регистрацией будет работать.

6
задан Rob Cooper 27 August 2008 в 05:46
поделиться

6 ответов

Поскольку в большинстве случаев необходимо отсортировать результаты сначала. Например, когда Вы ищете на Google, можно просмотреть только до 100 страниц результатов. Они не потрудились сортировать по PageRank вне 1 000 веб-сайтов для данного ключевого слова (или комбинация ключевых слов).

Разбиение на страницы быстро. Сортировка является медленной.

18
ответ дан 8 December 2019 в 04:11
поделиться

Lubos прав, проблемой не является то, что Вы - подкачка страниц (который берет ОГРОМНЫЙ объем данных от провода), но что необходимо выяснить то, что на самом деле идет на страницу..

То, что необходимо разбить на страницы, подразумевает, что существует много данных. Много данных занимает много времени к виду :)

3
ответ дан 8 December 2019 в 04:11
поделиться

Это - действительно неопределенный вопрос. Нам был бы нужен конкретный пример для получения лучшее представление о проблеме.

2
ответ дан 8 December 2019 в 04:11
поделиться

Этот вопрос кажется вполне прилично покрытым, но я добавлю немного что-то MySQL, конкретный, поскольку он ловит много людей:

Избегать использования SQL_CALC_FOUND_ROWS. Если набор данных не тривиален, считение соответствий и получение x сумма соответствий в двух отдельных запросах будут намного более быстрыми. (Если это будет тривиально, то Вы едва заметите различие так или иначе.)

2
ответ дан 8 December 2019 в 04:11
поделиться

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

Для этого я предположил бы хиты базы данных. Доступ к диску является медленным. После того как у Вас есть он в памяти, сортировка является дешевой.

1
ответ дан 8 December 2019 в 04:11
поделиться

Конечно, сортировка на случайном запросе занимает время, но если у Вас есть проблемы с тем же нумеровавшим страницы запросом, используемым regulary, существует любой что-то не так с установкой базы данных (неправильно индексирующий/ни один вообще, слишком мало памяти и т.д. Я не менеджер дб), или Вы делаете разбиение на страницы серьезно неправильно:

Ужасно неправильно: например, выполнение select * from hugetable where somecondition; в массив, получающий количество страницы с array.length, выбирают соответствующие индексы и dicard массив - затем повторяющий это для каждой страницы... Это - то, что я называю серьезно неправильно.

Лучшее решение два запроса: одно получение просто количество затем другое использование результатов получения limit и offset. (Некоторый собственный, нестандартный SQL-сервер мог бы иметь одну опцию запроса, я не знаю),

Плохое решение могло бы на самом деле работать вполне хорошо в над маленькими таблицами (на самом деле, это весьма мыслимо, что это быстрее на очень маленьких таблицах, потому что издержки создания двух запросов больше, чем получение всех строк в одном запросе. Я не говорю, что это так...), но как только база данных начинает расти, проблемы становятся очевидными.

0
ответ дан 8 December 2019 в 04:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: