2009-08-20 4 views
1

Ich habe eine Tabelle mit ungefähr 7 Millionen Datenzeilen. Das Schema ist so etwas wie:Welche Auswirkungen hat die Einrichtung eines Index für das Varchar-Feld?

ID - int (Primary Key) 
Name - Varchar(250) Null 
... 

ich einen Index auf den Spalt Namen festlegen möge Suche zu beschleunigen. z

Select * from table where name = 'ABC' 

Aber was sind die Auswirkungen der Einstellung eines Index auf einem varchar Feld nach oben? Indexgröße? Überwiegt die Geschwindigkeit die Nachteile?

Antwort

1

Wenn Sie häufig nach diesem Feld suchen, gibt es keine Frage - Sie brauchen einen Index darauf. Die Einfügung wird ein wenig langsamer und Sie werden mehrere MBs auf Ihrer Festplatte verlieren, aber es ist nichts im Vergleich zu der Nachschlagzeit, auf die Sie verzichten, wenn Sie in diesem Feld nach einem Wert suchen.

+0

Eine Nebenfrage: Würde eine ähnliche Suche von diesem Index profitieren? Wählen Sie zum Beispiel * aus der Tabelle aus, deren Name wie '% abc%' –

+0

Eine Suche "abc%" wird definitiv profitieren. Bezüglich "% abc%" ist der Effekt minimal. Wenn es in Ihrer Anwendung ein häufiges Szenario ist (und die Tabellen groß oder die Felder groß sind), haben Sie eine "Volltextsuche" als Alternative zur einfachen Indizierung. –

Verwandte Themen