Můžete přidat sloupec, např. word_length
který obsahuje délku slova a přidejte index na word_length
sloupec. Normálně by byl špatný návrh zahrnout data, která lze odvodit z jiného sloupce, ale v tomto případě musíte kvůli výkonu porušit čistotu. Pak může váš dotaz používat JOIN
podmínku pomocí tohoto sloupce:
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
Můžete použít INSERT
a UPDATE
spouští k vyplnění word_length
sloupec automaticky.
Může být také užitečné provést zřetězení po filtrování na 5 řádků:
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