2010. november 3., szerda

SQL Fulltext index használata több táblára.

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.

Nincsenek megjegyzések:

Megjegyzés küldése