Você pode adicionar uma coluna, por exemplo.
word_length
que contém o comprimento da palavra e adicione um índice no word_length
coluna. Normalmente, seria um design ruim incluir dados que podem ser derivados de outra coluna, mas, neste caso, você precisa quebrar a pureza por causa do desempenho. Então sua consulta pode usar um JOIN
condição usando esta coluna:SELECT CONCAT(w1.my_word, w2.my_word) joined
FROM my_words w1
JOIN my_words w2 ON w1.word_length = 8 - w2.word_length
WHERE w2.word_length < 8
ORDER BY RAND()
LIMIT 5
Você pode usar
INSERT
e UPDATE
acionadores para preencher o word_length
coluna automaticamente. Também pode ser útil fazer a concatenação após filtrar as 5 linhas:
SELECT CONCAT(word1, word2) joined
FROM (
SELECT w1.my_word word1, w2.my_word word2
FROM my_words w1
JOIN my_words w2 ON w1.word_length = 8 - w2.word_length
WHERE w2.word_length < 8
ORDER BY RAND()
LIMIT 5) x