Ik ben bezig met een kleine zoekmachine en heb de volgende tabellen:
tabel "links" met kolommen (id, naam, link)
tabel "woorden" met kolommen (id, woord)
tabel "koppel" met kolommen (id, wordid, linkid)
In de "woorden" tabel staan alle woorden die in de kolom "naam" staan van de "links" tabel". In de "koppel" tabel staat vervolgens aangegeven welk woord in welke linknaam voorkomt.
Misschien maakt het volgende het makkelijker te begijpen (dit zijn de koppelingen)
koppel.wordid=woorden.id
koppel.linkid=links.id
Om links te krijgen die voldoen aan voorwaarden "cafe" of "rock" doe ik de volgende query:
SELECT l.* from woorden w left join koppel k on w.id=k.wordid left join links l on k.linkid=l.id where w.woord in ( 'rock' , 'cafe' )
Om links te krijgen die voldoen aan voorwaarden "cafe" _en_ "rock" doe ik de volgende query:
SELECT l.* from woorden w left join koppel k on w.id=k.wordid left join links l on k.linkid=l.id where w.woord like '%rock%' and w.woord like '%cafe%'
Het mag duidelijk zijn dat de 2de query een stuk langer duurt dan de eerste (ivm met LIKE).
Is het mogelijk om de 2de query ("cafe" _en_ "rock") te versnellen?
De indexen op de verschillende kolommen staan overigens goed.
tabel "links" met kolommen (id, naam, link)
tabel "woorden" met kolommen (id, woord)
tabel "koppel" met kolommen (id, wordid, linkid)
In de "woorden" tabel staan alle woorden die in de kolom "naam" staan van de "links" tabel". In de "koppel" tabel staat vervolgens aangegeven welk woord in welke linknaam voorkomt.
Misschien maakt het volgende het makkelijker te begijpen (dit zijn de koppelingen)
koppel.wordid=woorden.id
koppel.linkid=links.id
Om links te krijgen die voldoen aan voorwaarden "cafe" of "rock" doe ik de volgende query:
SELECT l.* from woorden w left join koppel k on w.id=k.wordid left join links l on k.linkid=l.id where w.woord in ( 'rock' , 'cafe' )
Om links te krijgen die voldoen aan voorwaarden "cafe" _en_ "rock" doe ik de volgende query:
SELECT l.* from woorden w left join koppel k on w.id=k.wordid left join links l on k.linkid=l.id where w.woord like '%rock%' and w.woord like '%cafe%'
Het mag duidelijk zijn dat de 2de query een stuk langer duurt dan de eerste (ivm met LIKE).
Is het mogelijk om de 2de query ("cafe" _en_ "rock") te versnellen?
De indexen op de verschillende kolommen staan overigens goed.