Тип разработки Typo3: разбиение на страницы по сравнению с SQL setLimit - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть дискуссионный вопрос, который я хотел бы задать.

У меня есть таблица с 1000 строками данных.Я хотел бы иметь возможность искать и просматривать все эти строки во внешней поисковой системе.

Я хотел бы отображать 50 результатов на странице.

Вопрос в том, должен ли я простовернуть все отфильтрованные результаты (возможно, 1000 строк данных) через мой репозиторий и сделать так, чтобы мой текучий макет начальной загрузки обрабатывал разбиение на страницы ИЛИ я должен указать своему репозиторию использовать setLimit и offset, чтобы вернуть только 50 строк данных, которые должны отображаться на текущей странице?

Изначально я полагал, что в любом случае оператор SQL будет запрашиваться при каждом вызове страницы, поэтому последний будет лучше, поскольку возврат SQL будет ограничен всего 50 строками данных, но теперь я подозреваю, что Typo3 использует некоторыевид кэширования репозитория или базы данных, который будет означать, что объемные данные базы данных вызываются и сохраняются в памяти только один раз, а жидкая пагинация будет обрабатывать все остальное.Кроме того, используя setLimit и Offset, мне пришлось бы создать собственную систему нумерации страниц.

Что, по вашему мнению, более эффективно?Должен ли я позволить оператору SQL возвращать все данные и иметь жидкую обработку пагинации, или я должен сначала ограничить оператор SQL с помощью setLimit и построить свою собственную нумерацию страниц?Или есть способ их смешать?

Дополнительная информация:

Мой поиск в репозитории SQL довольно прост.Он использует:

$query = $this->createQuery();

... плюс «соответствующий» запрос для фильтрации результатов, а затем, наконец,

return $query->execute(); 

1 Ответ

0 голосов
/ 21 сентября 2018

Если вы используете widget.paginate ViewHelper , он автоматически корректно ограничит запрос.Запрос не будет выполнен до тех пор, пока вы не попытаетесь получить доступ к данным, поэтому до тех пор, пока вы не попытаетесь получить доступ к данным за пределами страницы ViewHelper, нет необходимости ограничивать его вручную.

...