|
MySQL.RU - Webboard
Вернуться
126 - Incorrect key во временной таблице (switch) 04/12/2017 - 20:51:02
Re: 126 - Incorrect key во временной таблице (Akina) 06/12/2017 - 22:19:36
> Original message text:
> From: switch - 04/12/2017 - 20:51:02
> Subject:126 - Incorrect key во временной таблице
> -----------------
> Добрый день. имеется проблема, описанная тут
> http://billly-bones.livejournal.com/6746.html
>
> Запрос такой:
>
>
> SELECT
> SQL_CALC_FOUND_ROWS
> asteriskcdrdb.contacts.id,
> GROUP_CONCAT(DISTINCT cr.status SEPARATOR ' ') AS status,
> '1' AS status1,
> '2' AS status2,
> '3' AS status3,
> '4' AS status4,
> asteriskcdrdb.contacts.number,
> asteriskcdrdb.contacts.name,
> asteriskcdrdb.contacts.mobile,
> asteriskcdrdb.contacts.home,
> asteriskcdrdb.contacts.address,
> asteriskcdrdb.contacts.im,
> asteriskcdrdb.contacts.email,
> asteriskcdrdb.contacts.url,
> asteriskcdrdb.contacts.number_text,
> asteriskcdrdb.contacts.mobile_text,
> asteriskcdrdb.contacts.home_text,
> SUM(cr.cause) AS cause,
>
> data3.2,
> data3.3,
> data3.4,
> data3.5,
> data7.2,
> data7.3,
> data7.4,
> data7.5,
> data7.6,
> data7.7,
> data7.8
> FROM asteriskcdrdb.contacts
> LEFT JOIN
> asteriskcdrdb.campaign_results cr
> ON cr.contact_id=asteriskcdrdb.contacts.id
> AND cr.campaign_id=3
> AND cr.attempt=0
> AND (cr.is_last=1 OR cr.status='autocompleted')
>
> LEFT JOIN
> asteriskcdrdb.campaign_form_data_3_3 data3
> ON data3.contact_id=asteriskcdrdb.contacts.id
> LEFT JOIN
> asteriskcdrdb.campaign_form_data_3_7 data7
> ON data7.contact_id=asteriskcdrdb.contacts.id
>
> WHERE asteriskcdrdb.contacts.contact_list_id=2
>
> GROUP BY asteriskcdrdb.contacts.id
> ORDER BY data3.2 ASC
> LIMIT 0, 25
>
> Когда в этот запрос добавляю ORDER BY то выскакивает ошибка. В процессе выполнения MYSQL создает временную таблицу и пожирает все доступное пространство в разделе (около 400 мб) и вываливает ошибку типа индекса нет во временной таблице. Сами таблицы небольшие, не больше трех мегабайт суммарно. В будущем вряд ли будут больше. Из-за особенностей системы нельзя сделать больше раздел (встраиваемая система). Да и нет гарантий что хватит гигабайтов если уж на трех мегабайтах съедает 400 мб.
> От ORDER BY отказываться не хотелось бы, пользователю нужна сортировка (эти данные потом уходят в плагин datatables.net). Как можно победить такое идиотское поведение MYSQL?
>
From: Akina - 06/12/2017 - 22:19:36
Subject:126 - Incorrect key во временной таблице
-----------------
> Сами таблицы небольшие, не больше трех мегабайт суммарно.
Кому это интересно? Лучше укажите количество записей - в каждой таблице отдельно и в итоговой выборке без отбора и ограничения.
Далее - почему именно LEFT JOIN? Есть неопровержимые факты, которые делают невозможным INNER? Почему именно такой порядок связывания таблиц?
Ну и значимые DDL были бы к месту, а также EXPLAIN запроса.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
45313
|
|