@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()?