A minap szembesültünk a projekten azzal, hogy hogyan lehet komplex SQL lekérdezéseket, amikor több táblára is akarunk fulltext index segítségével keresni, hatékonyan megírni.
Mivel a CONTAINS és a FREETEXT függvényeket csak indexenként külön-külön lehet használni, és egy táblára csak egy fulltext indexet definiálhatunk, ezért, ha meg tudjuk határozni azon adatok (oszlopok) körét, amelyeket biztosan használni akarunk a lekérdezésben, akkor érdemes felvennünk egy szövegmezőt az egyik táblába, amelybe össze-konkatenáljuk azokat a szövegeket, amelyekre keresni akarunk, és ezt a mezőt belevesszük a tábla fulltext-indexébe.
Használjuk elválasztó karaktereket (pont, kötőjel, stb.) mivel az index szavakra készül el, az SQL tagolni fogja ezek mentén.
Ez a megoldás erősen redundáns adattárolást jelent, de segítségével kiküszöbölhető egy (vagy több) igen időigényes 'OR' feltétel sokszori kiértékelése egy gyakran használt lekérdezésünkben.
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése