sql >> Database teknologi >  >> RDS >> Sqlserver

Optimer fuldtekstsøgning på tværs af flere tabeller

Dette er et vanskeligt problem, fordi CONTAINSTABLE kun kan søge i en enkelt tabels FTS-indeks ad gangen. Din UNION-løsning ovenfor er fin, så længe din præstation er acceptabel.

Vi stod over for det samme problem med at skulle søge effektivt i mange kolonner fra mange tabeller i en enkelt forespørgsel. Det, vi gjorde, var at samle alle data fra disse kolonner og tabeller i en enkelt skrivebeskyttet tabel. Vores forespørgsel behøvede derefter kun et enkelt CONTAINSTABLE-opkald

 CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)

Vi har et planlagt job, der kører hvert 5.-10. minut og trinvist samler alt ændret indhold fra vores kildetabel til vores enkelt skrivebeskyttede aggregerede indholdstabel.

Generelt ser det ud til, at brug af FTS i enhver rimelig størrelse database og brugerbelastning betyder, at du altid kæmper med ydeevnen. Hvis du opdager, at uanset hvad du gør, kan du ikke få ydeevnen til at være acceptabel, skal du muligvis undersøge andre teknologier såsomLucene .




  1. Hurtigste måde at afgøre, om posten eksisterer

  2. Sådan sikrer du MySQL/MariaDB-servere

  3. EM SQL Monitor Impact

  4. MYSQL - Hvad gør STRAIGHT_JOIN i denne kode?