улучшение производительности MySQL - PullRequest
0 голосов
/ 28 марта 2012

Вот скриншот команды объяснения mysql для общего запроса: http://cl.ly/3r34251M320A1P2s3e1Y

У меня есть 3 разные таблицы, которые мне нужно объединить, чтобы извлечь нужные данные.Это основной код модели CI, использующий activerecord

    $this->db->select('articles.id, articles.title, articles.link, articles.updated_time, articles.created_time, shows.network,shows.show_id, shows.name');
    $this->db->from('articles')->order_by('updated_time','desc')->offset($offset)->limit($limit);
    $this->db->join('labels', 'articles.remote_id = labels.articleid');
    $this->db->join('shows', 'shows.show_id = labels.showid');

Может кто-нибудь предложить какие-либо способы улучшить производительность схемы или запроса?

Спасибо

1 Ответ

0 голосов
/ 29 марта 2012

Что замедляет ваш запрос, так это использование mysql временных таблиц и файловой сортировки, что означает, что он не может эффективно использовать индекс и создает временную таблицу (много раз на диске!).Обычно это происходит, когда вы присоединяетесь к таблице, используя один индекс, и сортируете ее по другому индексу или используете условие для другого индекса.Первое, что вы можете сделать, это прочитать об этой проблеме и посмотреть, сможете ли вы хотя бы избежать использования временных таблиц дисков. Как MySQL использует временные таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...