Время медленного выполнения статического метода ORM Кохана

У меня есть приложение Kohana 3.3, работающее на WAMP (PHP 5.4.3), которое использует статическую функцию для получения списка последних статей. Когда я загружаю страницу, время выполнения приложения (через Kohana Profiler) составляет 6,7 секунды. Когда я загружаю ту же страницу без вызова метода get_recent (пропуская пустой массив), время выполнения приложения составляет 0,3 секунды.

Это указывает на то, что этот статический метод вызывает проблему. Я запустил сырой MySQL, и это занимает 1,4 секунды.

Это код внутри метода:

$articles = self::factory('user_articles')
                ->join('articles', 'INNER')->on('user_articles.article_id', '=', 'articles.id')
                ->order_by('user_articles.created_at', 'ASC')
                ->limit(10)
                ->group_by('articles.id')->find_all();

Есть индекс на user_articles.article_id и на articles.id, Что еще я могу сделать, чтобы оптимизировать запрос или ускорить время выполнения?

2 ответа

Вы можете добавить индекс на created_at проверить с сырым SQL, если это помогает или нет.
Также может быть хорошей идеей не использовать ORM и пытаться выполнить запрос DB Builder.

Попробуйте получить последний запрос по echo Database::instance()->last_query и попробуйте MySQL EXPLAIN, Он покажет вам, какие индексы используются.

PS: сколько строк у вас в articles а также users?

Другие вопросы по тегам