MySQL сервер ушел ОШИБКА

0
Warning: mysql_query() [function.mysql-query]: 
MySQL server has gone away in filename.php on line 201  

запрос:

SELECT * FROM ta
    LEFT JOIN tb ON ta_id = tb_oid 
    LEFT JOIN tc ON ta_id = tc_oid 
    LEFT JOIN td ON ta_id = td_oid
WHERE 
    ta_time1 > 0 OR ta_time2 > 0 OR 
    tb_time1 > 0 OR tb_time2 > 0 OR 
    tc_time1 > 0 OR tc_time2 > 0 OR 
    td_time1 > 0 OR td_time2 > 0 
GROUP BY td_id 
ORDER BY  
    ta_time1 DESC, ta_time2 DESC,
    tb_time1 DESC, tb_time2 DESC,
    tc_time1 DESC, tc_time2 DESC,
    td_time1 DESC, td_time2 DESC
LIMIT 0, 40  

Как я могу оптимизировать этот запрос?

  • 0
    Выбор * - плохой выбор, как минимум вы дважды возвращаете поля объединений, а это пустая трата ресурсов сервера и сети. Чем меньше полей вы вернете, тем лучше, поэтому, если вам не нужно каждое поле из всех таблиц (а поскольку у вас есть объединения, то нет), укажите поля.
Теги:
left-join

1 ответ

2
Лучший ответ
  • Установите индексы для всех полей, если вы уже не сделали этого.
  • Используйте как небольшие поля, насколько это возможно. Например. если ID - 128 байтовых строк, где вы можете использовать крошечный int, используйте последний

Кстати, если вы не знаете, что означает "ушел", ознакомьтесь с руководством: http://dev.mysql.com/doc/refman/5.0/en/gone-away.html

  • 1
    +1 за ссылку на руководство

Ещё вопросы

Сообщество Overcoder
Наверх
Меню