#mysql
#mysql
Вопрос:
RIGHT JOIN (SELECT * FROM images ORDER BY image_id) AS `i` ON i.ad_id = a.id
Как упорядочить объединенную таблицу без использования временной таблицы? 🙂
Потому что это в 5 раз медленнее, чем простое объединение:
RIGHT JOIN images AS `i` ON i.ad_id = a.id
И есть проблемы со списком полей, который также должен дублироваться внутри подзапроса, чтобы избежать использования знака * .
Спасибо 😉
Обновить
SELECT a.id, GROUP_CONCAT(image_id) AS `image_ids`
FROM `ads` AS `a`
RIGHT JOIN (SELECT * FROM images ORDER BY image_id) AS `i` ON i.ad_id = a.id
GROUP BY `a`.`id`
ORDER BY `a`.`id` DESC
В объединенной таблице есть несколько строк, которые соответствуют каждому идентификатору. Вот почему мне нужно упорядочить их.
group_concat(image_id)
Ответ №1:
Упорядочить по image_id после объединения.
(У вас ведь есть индекс на image_id, не так ли?)
Обновить:
Вы можете поместить ORDER BY
внутри вашего GROUP_CONCAT
:
GROUP_CONCAT(image_id ORDER BY image_id)
и тогда вам не нужен подзапрос.
Комментарии:
1. 🙂 не решение. Порядок должен использоваться для другого поля таблицы.
2. Конечно, у первичного ключа и ad_id также есть индекс.
3. Круто! Я этого не знал! Спасибо, приятель. 1 🙂
4. Рад помочь. И я только что получил новую привилегию … ура!
5. Rofl: D Баааах! Решение работает, но я только что заметил, что оно не упорядочивает остальные поля GROUP_CONCAT. Мне нужно использовать это в каждом поле. В любом случае, ладно 🙂
Ответ №2:
В этом примере неясно, зачем вам нужно упорядочивать подзапрос, поэтому я бы сказал, просто избавьтесь от упорядочивания в подзапросе и применяйте упорядочивание только к самому внешнему запросу.
Комментарии:
1. из-за group_concat(i.image_id) 🙂 Внутри объединенной таблицы несколько строк
2. @Beck: Тогда, возможно, вам следует опубликовать весь запрос.
3. Конечно, извините, это моя лень и дурная привычка. Минуточку.
4. @Beck: У меня здесь нет MySQL для тестирования, но вы пробовали добавить третий внешний запрос, который просто выполняет group_concat и упорядочивает результат вашего текущего внешнего запроса (за вычетом группировки и упорядочивания, конечно)?
5. Пожалуйста, добавьте пример измененного запроса, и я запущу его здесь. 🙂