SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 13.05.2015 11:03:47

septera
Завсегдатай
Откуда: Краснодар
Зарегистрирован: 16.02.2011
Сообщений: 30

Разное время выполнения одного запроса

Всем привет.
Почему один и тот же запрос может выполняться из 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 |

SELECT SQL_NO_CACHE `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`)

Неактивен

 

#2 13.05.2015 11:45:06

septera
Завсегдатай
Откуда: Краснодар
Зарегистрирован: 16.02.2011
Сообщений: 30

Re: Разное время выполнения одного запроса

Разобрался, перед этим было:
SET SESSION old_alter_table=1;
ALTER IGNORE TABLE `M_LOAD` ADD UNIQUE `index3`...
SET SESSION old_alter_table=0;
Даже полное удаление коннектора в php и создание нового не помогает, только отказ от конструкции выше.

Неактивен

 

#3 13.05.2015 13:59:00

septera
Завсегдатай
Откуда: Краснодар
Зарегистрирован: 16.02.2011
Сообщений: 30

Re: Разное время выполнения одного запроса

В завершении, может быть кому-то пригодится. Если после использования вышеописанной конструкции появляется проблема с долгими выборками, то нужно выполнить ANALYZE TABLE после SET SESSION old_alter_table=0.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson