2013-01-27 5 views
0

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

Это указывает на то, что этот статический метод вызывает проблему. Я запустил необработанный 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. Есть ли что-то еще, что я могу сделать, чтобы оптимизировать запрос или ускорить время выполнения?

ответ

0

Вы можете добавить индекс на created_at - проверить с помощью raw SQL, если он помогает или нет.
Возможно, также неплохо не использовать ORM и попытаться выполнить запрос DB Builder.

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^