Zunächst sollte ich darauf hinweisen, dass ich nicht viel über SQL Server-Indizes weiß.Wird die Indexerstellung die Leistung der varchar (max) -Abfrage verbessern und den Index erstellen
Meine Situation ist, dass ich eine SQL Server 2008-Datenbanktabelle haben, die eine Varchar (max) Spalte in der Regel mit einem Los Text gefüllt hat.
Mein ASP.NET Web-Anwendung verfügt über eine Suchfunktion, die diese Spalte für Stichwortsuche abfragt, und in Abhängigkeit von der Anzahl der Keywords für ihr gesucht kann in der SQL-Abfrage eines oder mehr LIKE ‚% keyword%‘ Aussagen sein um die Suche zu machen.
Meine Webanwendung ermöglicht auch die Suche nach verschiedenen anderen Spalten in dieser Tabelle, nicht nur diese eine Spalte. Es gibt auch ein paar Joins von anderen Tabellen.
Meine Frage ist, lohnt es sich, einen Index für diese Spalte zu erstellen, um die Leistung dieser Suchanfragen zu verbessern? Und wenn ja, welche Art von Index und nur die Indizierung der einen Spalte ist ausreichend oder muss ich andere Spalten wie den Primärschlüssel und andere durchsuchbare Spalten einbeziehen?
Diego, mein Verständnis ist, ich kann Index für eine varchar (max) -Spalte, solange es sein kann CREATE nur ein nicht gruppierte, offline Index und daß die var (max) Spalte INCLUDEed, z. B. nicht gruppierten Index Indexname ON Tablename (SomeColumn) schließen (VarcharMaxColumn) mit (ONLINE = OFF) – johna
VARCHAR (max) in schließt auf einem Index, bedeutet dies nur Blattniveau auf dem Index teilnehmen, auf einer Suchanfrage wird es kaum genutzt – Diego
MIT (ONLINE = OFF) ist keine Eigenschaft des Index werden bedeutet. Es zeigt an, dass der Index während der Erstellung offline gesetzt wird. Wenn Sie es auf ON setzen, wird der Index in der tempDB erstellt und die Tabelle ist während der Indexerstellung zugänglich. Es sollte für große Tabellen verwendet werden, bei denen das Erstellen eines Indexes sehr lange dauert und die Tabelle während der Erstellung nicht zugänglich sein kann. – Diego