Показ Oracle Pagination Queries в CakePHP 1.2 - PullRequest
0 голосов
/ 25 марта 2011

Как работают запросы при использовании нумерации страниц в CakePHP?Означает ли это:

a) Запросить весь набор записей и отобразить только записи, указанные в настройках нумерации страниц?

b) Запросить только подмножество записей на основе настроек разбиения на страницы?

Я хочу избежать запроса к миллионам записей, если он не использует опцию "b".Я искал в Интернете часами и ничего не могу найти.

Если это опция "a", знаете ли вы какие-либо настройки, которые преобразуют нумерацию страниц в опцию "b"?Я работаю с Oracle, поэтому стандарт

SELECT * FROM `table`
LIMIT 60 , 30

не работает в Oracle, как в MySQL.Но я могу легко преобразовать образец MySQL в Oracle по мере необходимости.

ОБНОВЛЕНИЕ: Кажется, что данные корректно ограничиваются, но я не вижу запроса, чтобы точно знать, что это так.Когда я отображаю результаты в dbo_source.php, он возвращает только количество записей, как определено пределом нумерации страниц.Странно, что он не покажет фактический запрос, используемый для разбивки записей на страницы.Может ли это быть настройка оракула, которую они передают перед выполнением запроса?

Ответы [ 3 ]

2 голосов
/ 26 марта 2011

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

Первый способ - включить ведение журнала mysql из самого mysql. Пока вы единственный, кто использует сервер, этого должно быть вполне достаточно.

Второй способ - отредактировать файл dbo_ * в вашей установке тортов и добавить несколько строк для записи запросов в файл. Это можно сделать, открыв файл dbo_mysql.php. Находится:

торт / ЛИЭС / модель / источники данных / ДБО / dbo_mysql.php

Найти функцию _execute ($ sql). Все, что вам нужно сделать, это добавить строку или 3 php-кода для вывода $ sql в файл query.log.

Затем, чтобы увидеть выполнение ваших живых запросов, откройте терминал и запустите tail -f query.log (используя mac или linux).

Это отличный способ увидеть, какие запросы выполняются, и отличный способ оптимизировать ваш код. Также, если вам интересно, просто просмотрите файлы dbo_ *, чтобы увидеть, как исполняется oracle по сравнению с mysql и т. Д.

1 голос
/ 25 марта 2011

форма mysql

торт выполняет поиск с ограничением и смещением.поэтому он получит только то, что вы положили в «предел».по умолчанию это что-то вроде 20

первая страница будет ограничена 20, 0, затем 20, 20, затем 20, 40 или что-то подобное.

для оракула, я не уверенэто будет нечто подобное.

0 голосов
/ 03 апреля 2011

Лучшее решение, которое я нашел до сих пор, это: CakePHP - получить последний запрос

Он может быть встроен прямо в каркас с помощью app_model.php и предоставляет доступ к любой модели, просто вызывая ее.

...