Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > MySQL > Оптимизация запроса с большим объемом данных |
Автор: sanich_ 27.10.2015, 20:27 | ||||||||||||
Добрый день. Прошу помощи у профессионалов по ускорению запроса для Mysql Есть таблица email_subscribe с набором значений:
Необходимо получить дубликаты по полю "ekey", которые в дальнейшем можно удалить Сделал 2 запроса, они выводят, список нужных дублей по полю "ekey", которые можно потом удалить...
Результат двух запросов правильный и идентичный:
Проблема в том, что при больших объемах данных (если в таблице email_subscribe будет 700 000 записей) эти запросы очень долго выполняются, не могу дождаться завершения запроса на локальном хосте при ~160 000 строк Индексы по нужным полям таблицы email_subscribe поставил Результат http://sss.ssmaker.ru/6890cbdb.png Привожу explain запроса:
Результат http://sss.ssmaker.ru/b9ae2dfc.png Привожу explain запроса:
Результат http://ssmaker.ru/917b73a2.png В чем причина длительного выполнения обоих запросов? |
Автор: Akina 27.10.2015, 20:58 |
Explain принято давать цитатой с консоли в теге кода. Если не умеете - то скриншотом, присоединённым к сообщению. Но уж никак не ссылкой в хрен знает куда... Ну и при http://www.sql.ru/forum/1182033/optimizaciya-zaprosa-s-bolshim-obemom-dannyh принято давать ссылку. |
Автор: Angel_666 28.10.2015, 11:05 | ||||
t.* тебе так нужны все поля данной таблицы? ограничь необходимым полем id и ekey
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Optimizatsiya-zaprosa-s-bolshim-obyemom-dannykh-id562fb49bae2015657e8b4567#findElement_E7045_563081afae20157965887081_0 |
Автор: tzirechnoy 28.10.2015, 14:51 | ||
Есть ещё вариант потом удалить только те записи, которые не попали в эту временную таблицу, но это сложнее и требует индэксов на expval для нормальной работы. |