Коррелированные подзапросы могут иметь производительность на низком уровне, поскольку они выполняются строка за строкой. Чтобы решить эту проблему, переместите коррелированный подзапрос в обычный подзапрос / производную таблицу и присоединитесь к ней.В этом случае он не будет выполнять строку за строкой для всего возвращенного набора результатов, поскольку он будет выполнен ДО оператора выбора.
MySQL ссылки, которые подтверждают коррелированные подзапросы, не являются оптимальным выбором в MySQL. Как оптимизировать Ответ, указывающий, что msql печально известен плохой оптимизацией коррелированных подзапросов
Я использую sql-сервер, но я уверен, что принцип тот же дляmysql , поэтому я надеюсь, что это, по крайней мере, укажет вам правильное направление.Вам нужно будет разделить / вернуть ваш один результат по каждому кредиту, возможно, кто-то может вмешаться в специфический синтаксис mysql, и я мог бы обновить свой ответ
select
p.id
,p.title
,p.slug
,p.content
,t.name
,mySubQuery.value
from
posts as p
inner join termrel as tr
on ( tr.object = p.id )
inner join termtax as tx
on ( tx.id = tr.termtax_id )
inner join terms as t
on ( t.id = tx.term_id )
left join (
-- use MYSQL function to partition the reslts and only return 1, I use sql-server, not sure of the RDMS specific syntax
select
id
,url
from
gallery
limit 1
) as mySubquery
on mySubquery.id = p.id
where
tx.taxonomy_id = 3
and p.post_status is null
order by
t.name asc