При использовании разбивки на страницы в CakePHP, как работают запросы? Это:
a) Запросить весь набор записей и отобразить только записи, заданные параметрами разбивки на страницы?
b) Запросить только подмножество записей на основе настроек разбивки на страницы?
Я хочу избежать запроса на миллионы записей, если он не использует параметр "b". Я много часов искал в Интернете, и ничего не могу найти.
Если это опция "a", знаете ли вы какие-либо настройки, которые преобразуют разбиение на страницы на параметр "b"? Я работаю с Oracle, поэтому стандартный
SELECT * FROM `table`
LIMIT 60 , 30
не работает в Oracle, как в MySQL. Но я могу легко преобразовать образец MySQL в Oracle по мере необходимости.
UPDATE: он, по-видимому, правильно ограничивает данные, но я не вижу запроса, чтобы точно знать, что это такое. Когда я повторяю результаты в файле dbo_source.php, он возвращает только количество записей, определяемых префиксом разбиения на страницы. Странно, что он не будет отображать фактический запрос, используемый для разбивки на страницы. Может ли быть установкой оракула, которую они передают, прежде чем запрос будет сделан?
Лучшее решение, которое я нашел до сих пор, это: CakePHP - выполнить последний запрос
Он может быть встроен прямо в структуру с помощью app_model.php и обеспечивает доступ к любой модели, просто называя ее.
Существует несколько способов увидеть, какие запросы фактически выполняются.
Первый способ - включить ведение mysql из самого mysql. Пока вы используете только сервер, он должен быть совершенно достаточным.
Второй способ - отредактировать файл dbo_ * в вашей установке на торте и добавить несколько строк для регистрации запросов к файлу. Это можно сделать, открыв файл dbo_mysql.php. Он расположен:
жмых/ЛИЭС/модель/источники данных/ДБО/dbo_mysql.php
Найдите функцию _execute ($ sql). Все, что вы делаете, это добавить строку или 3 php-кода для вывода $sql в файл queries.log.
Затем, чтобы увидеть ваши текущие запросы, откройте терминал и запустите tail -f queries.log(используя mac или linux).
Это отличный способ увидеть, какие запросы выполняются, и отличный способ оптимизировать ваш код. Также, если вам интересно, просто просмотрите файлы dbo_ *, чтобы увидеть, как выполняется oracle по сравнению с mysql и т.д.
form mysql
cake делает поиск с ограничением и смещением. поэтому он получит только то, что вы положили в "лимит". Значение по умолчанию - это примерно 20
первой страницей будет лимит 20, 0, затем 20, 20, затем 20, 40 или что-то в этом роде.
для оракула, я не уверен. это будет что-то подобное, хотя.