Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разное время выполнения одного запроса / 9 сообщений из 9, страница 1 из 1
13.05.2015, 10:52:36
    #38957134
MMG_Alpinist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
Всем привет.
Почему один и тот же запрос может выполняться из phpMyAdmin за 0.1853 сек., а из php скрипта под тем же пользователем уходит в долгую выборку данных? Причем если скопировать запрос из результата SHOW FULL PROCESSLIST и тут же выполнить в pma то результат сразу появится. Лимита по выборке и там и там нету, на выходе 75 строк. SHOW FULL PROCESSLIST показывает:
| Id | User | Host | db | Command | Time | State | Info | Rows_sent | Rows_examined |
| 88265 | db_rec | localhost | db_rec | Query | 110 | Sending data | SELECT ... | 0 | 16625708 |

Запрос:
Код: plsql
1.
2.
3.
4.
SELECT `ML_C_ART1` AS `C_ART`, `ML_C_PROIZV1` AS `C_PROIZV`, `ML_ART1` AS `ART`, `ML_PROIZV1` AS `PROIZV`, `ML_NAME` AS `NAME` FROM `M_LOAD` WHERE `ML_ID` IN (SELECT MIN(`M_LOAD`.`ML_ID`) FROM `M_LOAD` USE INDEX(`index1`)
LEFT JOIN `MM_POS` USE INDEX(`C_ART_C_PROIZV`) ON `M_LOAD`.`ML_C_ART1`=`MM_POS`.`C_ART` AND `M_LOAD`.`ML_C_PROIZV1`=`MM_POS`.`C_PROIZV`
WHERE `MM_POS`.`POS_ID` IS NULL
GROUP BY `M_LOAD`.`ML_C_ART1`, `M_LOAD`.`ML_C_PROIZV1`)
...
Рейтинг: 0 / 0
13.05.2015, 11:01:51
    #38957142
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
Ну это вопрос к коннектору от пыха к мускулю. Хрен его знает, что он там шлёт серверу дополнительного.
...
Рейтинг: 0 / 0
13.05.2015, 11:05:18
    #38957151
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
MMG_Alpinist,

а если после слова SELECT добавить SQL_NO_CACHE, то поведение запроса сохранится?
...
Рейтинг: 0 / 0
13.05.2015, 11:06:39
    #38957153
MMG_Alpinist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
Akina, никогда не было с этим проблем, а тут вдруг. Забыл указать что SQL_NO_CACHE я естественно добавляю и вижу актуальное время выполнения в pma.
...
Рейтинг: 0 / 0
13.05.2015, 11:44:51
    #38957203
MMG_Alpinist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
Разобрался, перед этим было:
SET SESSION old_alter_table=1;
ALTER IGNORE TABLE `M_LOAD` ADD UNIQUE `index3`...
SET SESSION old_alter_table=0;
Даже полное удаление коннектора в php и создание нового не помогает, только отказ от конструкции выше.
...
Рейтинг: 0 / 0
13.05.2015, 11:50:11
    #38957213
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
MMG_AlpinistSET SESSION old_alter_table=1;
ALTER IGNORE TABLE `M_LOAD` ADD UNIQUE `index3`...
SET SESSION old_alter_table=0;Забавно. Этот костыль даже в доке описан, оказывается.
А если после него сделать ANALYZE TABLE `M_LOAD`, то проблема остается?
...
Рейтинг: 0 / 0
13.05.2015, 13:55:36
    #38957489
MMG_Alpinist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
miksoftMMG_AlpinistSET SESSION old_alter_table=1;
ALTER IGNORE TABLE `M_LOAD` ADD UNIQUE `index3`...
SET SESSION old_alter_table=0;Забавно. Этот костыль даже в доке описан, оказывается.
А если после него сделать ANALYZE TABLE `M_LOAD`, то проблема остается?
Проблема пропала после вставки ANALYZE TABLE `M_LOAD`.
...
Рейтинг: 0 / 0
13.05.2015, 14:05:03
    #38957510
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
MMG_AlpinistПроблема пропала после вставки ANALYZE TABLE `M_LOAD`.Различается ли план запроса с этой строкой и без?

Кстати, зачем вообще повторять ALTER IGNORE TABLE `M_LOAD` ADD UNIQUE `index3` многократно?
По идее, индекс создают однократно, а потом он просто есть и работает.
...
Рейтинг: 0 / 0
13.05.2015, 14:06:55
    #38957515
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разное время выполнения одного запроса
Кстати, если версия MySQL ниже 5.6, то фрагмент "IN (SELECT ...)" желательно переписать через JOIN или EXISTS.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разное время выполнения одного запроса / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]