sql >> Databáze >  >> RDS >> Sqlserver

Optimalizujte fulltextové vyhledávání ve více tabulkách

To je obtížný problém, protože CONTAINSTABLE může prohledávat FTS index pouze jedné tabulky najednou. Vaše výše uvedené řešení UNION je v pořádku, pokud je váš výkon přijatelný.

Čelili jsme stejnému problému, kdy bylo potřeba efektivně prohledávat mnoho sloupců z mnoha tabulek v jediném dotazu. Udělali jsme agregaci všech dat z těchto sloupců a tabulek do jediné tabulky pouze pro čtení. Náš dotaz pak potřeboval pouze jediné volání CONTAINSTABLE

 CONTAINSTABLE(AggregatedTable, AggregatedColumn, @FtsQuery)

Máme naplánovanou úlohu, která se spouští každých 5–10 minut a postupně agreguje veškerý upravený obsah z naší zdrojové tabulky do naší jediné agregované tabulky obsahu pouze pro čtení.

Obecně se zdá, že používání FTS v jakékoli přiměřeně velké databázi a uživatelské zátěži znamená, že vždy bojujete s výkonem. Pokud zjistíte, že bez ohledu na to, co děláte, nemůžete dosáhnout přijatelného výkonu, možná budete muset prozkoumat další technologie, jako je Lucen .




  1. Pomocí sp_help_jobschedule v SQL Server

  2. JUnit/HSQLDB:Jak obejít chyby se syntaxí Oracle při testování pomocí HSQLDB (bez oprávnění a/nebo bez DUAL objektu)

  3. Výkon MySQL pomocí AUTO_INCREMENT na PRIMARY KEY

  4. Nainstalujte webový server ve Windows XP s Apache2, PHP5 a MySQL4 – část 1