我有一个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
上有一个索引。我还能做些什么来优化查询或加快执行时间吗?
答案 0 :(得分:0)
您可以在created_at
上添加索引 - 如果有帮助则检查原始SQL
也许最好不要使用ORM并尝试运行DB Builder查询。
答案 1 :(得分:0)
尝试通过echo Database::instance()->last_query
获取最后一个查询并尝试使用MySQL EXPLAIN
。它会告诉你,使用了哪些索引。
PS:articles
和users
中有多少行?