Долгий запрос

ldar
Дата: 17.01.2013 12:05:00
Приветствую вас, гуру sql. Буду весьма благодарен за советы. Посмотрите пожалуйста запрос, он отрабатывает как положено только почему то чертовски долго, что может быть причинной пожирания скорости? Данных в таблиц пока мало, несколько тысяч и уже тормозит, а что тогда будет в дальнейшем.
SELECT a.id_tag_data_Kip, a.date_time, b.id_server  AS server, b.id_triger  AS id_triger,
              b.id_math  AS id_math,b.id_tag  AS tag, c.name_server as name_server, c.ip_address AS ip_server,
              c.name_DB AS name_DB, c.patch AS path
              FROM `tbl_tag_data_sec` a
              join (SELECT id_tag_data, max(date_time) x_date FROM tbl_tag_data_sec GROUP BY id_tag_data) v
              on a.id_tag_data = v.id_tag_data
              and a.date_time = v.x_date
              LEFT JOIN `tbl_data` b ON a.id_tag_data=b.id
              LEFT JOIN `tbl_data_conn_server` c ON b.id_server=c.id
              GROUP BY a.id_tag_data ORDER BY b.id_server
artas
Дата: 17.01.2013 12:13:24
ldar,

план запроса и ДДЛ таблиц в студию
Akina
Дата: 17.01.2013 13:03:48
Перепишите подзапрос на джойн.
Расставьте везде алиасы таблиц.
Отформатируейте текст из лапши в читаемый вид.
Выложите полученный текст, его explain и DDL использованных таблиц.
tanglir
Дата: 17.01.2013 13:13:38
Akina
Перепишите подзапрос на джойн.
Что имелось в виду? У ТСа же там не dependent subquery...
К остальному +1
tanglir
Дата: 17.01.2013 13:14:35
tanglir
У ТСа же там не dependent subquery
В смысле, даже мусклевскому оптимизатору не должно прийти в голову, что это можно обрабатывать как DS :)
Akina
Дата: 17.01.2013 13:31:30
tanglir
У ТСа же там не dependent subquery...

Да ты посмотри на смысл! Он же забубенил эту клюкву для того, чтобы отфильтровать id_tag_data, у которых date_time равно максимальному для группы этого id_tag_data. Да, тут не на джойн надо переписывать, а сносить вообще эту хрень в виде подзапроса в секцию WHERE...
ldar
Дата: 17.01.2013 20:28:30
Akina
Да ты посмотри на смысл! Он же забубенил эту клюкву для того, чтобы отфильтровать id_tag_data, у которых date_time равно максимальному для группы этого id_tag_data. Да, тут не на джойн надо переписывать, а сносить вообще эту хрень в виде подзапроса в секцию WHERE...

Все никак не доберусь до проекта чтоб показать вам структуру таблиц. Могу только ответить, что я эту хрень с самого начала сносил в подзапрос в секцию WHERE, результат был хуже, скорость была в несколько раз выше. После чего было решено переписать под JOIN.
Еще у меня мысль, что причина все таки в железе, я переместил сейчас проект на старый десктоп с оперативкой 512МБ и в добавок забыл отконфигурировать mysql, по дефолту стоит. До этого проект крутился на моей основной машине, и там я не замечал тормоза. А сейчас при выполнении этого запроса процессор грузится под 100%. Возможно я не правильно мыслю, поправте пожалуйста, я только новичок.
ldar
Дата: 17.01.2013 20:41:25
Подскажите пожалуйста инструмент для отслеживания скорости mysql
ldar
Дата: 18.01.2013 08:03:14
Вот моя структура - sqlfiddle
На sqlfiddle с маленьким количеством данных отрабатывает быстро, думаю тысячи строк загонять на sqlfiddle будет жестко?
ldar
Дата: 18.01.2013 08:33:27
ldar
Вот моя структура - sqlfiddle
На sqlfiddle с маленьким количеством данных отрабатывает быстро, думаю тысячи строк загонять на sqlfiddle будет жестко?

Не ту ссылку воткнул sqlfiddle