Разбивка на страницы - Получить все элементы из БД и затем разбить на страницы или получить «страницы» элементов? - PullRequest
1 голос
/ 11 января 2012

В настоящее время я разрабатываю проект Zend Framework, используя Doctrine в качестве ORM.

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

У меня такой вопрос: лучше ли сначала получить всех элементов из БД, а затем "разбить их на страницы" или получить "страниц" элементов по запросу? что будет иметь большее влияние на производительность?

Ответы [ 2 ]

1 голос
/ 11 января 2012

Для меня лучше получить часть данных, а затем разбить их на страницы.

  1. Если вы получаете все данные из БД, вы разбиваете их на страницы с помощью JavaScript. Первое открытие страницы займет много времени (для 400 рек. Все в порядке). Браузер имеет ограниченную память. Если пользователь открывает много вкладок в браузере и вы забираете много памяти (со своими данными) это замедлит скорость работы браузера и скорость вашего приложения. У вас есть только 400 записей, но увеличение данных происходит очень часто. В худшем случае весь браузер может сломаться при открытии страницы. Что если браузер не поддерживает JS ...

  2. Если вы получаете часть данных из БД, единственным дефектом является у пользователя очень низкая скорость интернета (но это недостаток в первом варианте - при первом обновлении страницы). Если кто-то захочет перейти на другую страницу, это займет немного больше времени, чем JavaScript.

Второй вариант лучше (для меня) в долгосрочной перспективе, потому что, если он работает, он будет работать годами.

1 голос
/ 11 января 2012

Механизмы баз данных обычно лучше всего подходят для поиска.Таким образом, в общем, если вы можете делегировать задачу поиска данных механизму БД вместо того, чтобы делать это в памяти и использовать язык программирования, лучшим решением для производительности будет позволить движку БД сделать это за вас.

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

...