U kunt een kolom toevoegen, b.v. word_length
die de lengte van het woord bevat, en voeg een index toe aan de word_length
kolom. Normaal gesproken zou het een slecht ontwerp zijn om gegevens op te nemen die uit een andere kolom kunnen worden afgeleid, maar in dit geval moet u de zuiverheid verbreken omwille van de prestaties. Dan kan je zoekopdracht een JOIN
. gebruiken voorwaarde met behulp van deze kolom:
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
U kunt INSERT
. gebruiken en UPDATE
triggers om de word_length
. in te vullen kolom automatisch.
Het kan ook handig zijn om de samenvoeging uit te voeren nadat u naar de 5 rijen hebt gefilterd:
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