Executando verificação de segurança...
1

Realmente é necessario fazer isto com o union?

minha sugestão:

SELECT ID
,post_name
,post_update
FROM wp_posts
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = wp_posts.ID
WHERE wp_term_relationships.term_taxonomy_id IN ('254', '112')
AND wp_posts.ID != '10768'
AND wp_posts.post_status = 'publish'
AND wp_posts.linguagem != 'en'
ORDER BY RAND()
LIMIT 8;

Provavelmente essa consulta que fiz tera melhor desempenho porque em comparação com a primeira consulta, utilizei operador "IN" ao invés de várias cláusulas "UNION ALL".
Além disso, a clausa where roda somente uma vez, em vez de rodar tres vezes.

Carregando publicação patrocinada...
1

@Marilzon Acabei descobrindo que o que estava pensando na minha consulta era o último rand(), pois minha tabela tem mais de 100.000 linhas

mas mesmo com rand(), sua consulta processou em 0.0064s o que já é incrivel,
Mas não está retornando do mesmo jeito do código original

(Editado) E testando mais a fundo no SLQ do Banco de dados, percebi que todos os posts da consulta tem relação com a categoria e com as tags, por isso que ficou leve a consulta. Pois ele não está buscando os posts aleatórios como na consulta original.

Eu preciso que ele retorne
2 posts que tenha relação a tag ("254") se existir
e 2 posts que tenha relação a categoria ("112") se existir
E depois gere o restante aleatóriamente em no máximo 8 resultados ao todo.

Existe outra forma de gerar valores aleatórios sem usar o rand()?