Verwendung von Indizes mit NVarchar(50) vs. NVarchar(255) - Spalte?

Wir haben eine indizierte Spalte ( ModelName ), die hat eine große Bedeutung in der Tabelle und ist sehr ähnlich zu einer "Katalog-Nummer", aber es ist nicht der PK.

viele ORDER by ModelName ; WHERE ModelName etc, verwendet wird.

Die Spalte begann ursprünglich als NVarchar(50), aber die Größe verändert sich über die Zeit auf 100, und jetzt ist es notwendig, 255.

Habe ich gefunden, dass viele Beiträge auf "NVarchar(MAX) vs. NVarChar(N)", aber ich kann nicht eine schlüssige Antwort:

Gibt es einige/erhebliche performance-hit mit NVarchar(255) statt NVarchar(100) statt NVarchar(50) speziell, wenn es um Indizes?

Ist eine kürzere Spalte Größe (50) besser als die längeren (255) in Bezug auf die Leistung? Und kann es sein, spezielle Einstellungen für solche Index um die Leistung zu verbessern?


Hier ist ein weiterer Verweis in die Kommentare von @a_horse_with_no_name:

Best practices für die SQL-varchar-Spalte Länge

Hinweis Antwort von Ariel: https://stackoverflow.com/a/8295195/1140885

Wo es heißt:

", Insbesondere, wenn dabei die Sortierung, größere Spalte machen mehr
Platz, also wenn das weh tut-performance, dann müssen Sie sich darum zu kümmern
und machen Sie kleiner."

und in den Kommentaren:

"Es gibt Probleme und Einschränkungen von Indizes zu betrachten, auch. Sie
kann nicht ein (a,b,c,d) index, wenn alle vier Spalten sind VARCHAR(255)"

Keine definitive Schlussfolgerung/Verweis auf docs etc.

  • Es gibt keinen Unterschied zwischen nvarchar(42), nvarchar(255) oder nvarchar(639) in Bezug auf Leistung. Siehe auch hier: stackoverflow.com/q/8295131/330315
  • Danke für den link, aber, tut NVarchar und Varchar führen die gleiche? Meine Frage ist spezifisch für NVarchar.
  • Auch die Frage/Antwort, die Sie zur Verfügung gestellt (die sehr interessant ist, +1) nicht berücksichtigt Indizes überhaupt. Einfach in den Kommentaren, wo es vorgeschlagen, dass "there are issues and limitations on indexes to consider, too. You can't have a (a,b,c,d) index when all four columns are VARCHAR(255)", und "Specifically, when doing sorting, larger column do take up more space"...
  • Indizes sind nur betroffen, wenn Sie die Speicherung von mehr Daten in der Spalte. Ein index auf eine varchar(10) und varchar(100) Spalte wird dieselbe sein, wenn es speichert die gleichen Daten. Sollten Sie die Längenbeschränkung auf eine varchar/nvarchar-Spalte mehr wie eine Einschränkung, als eine technische Konfiguration.
  • aber auf eine nvarchar(639) Spalte, Sie würden nicht in der Lage sein, einen index zu erstellen, da die max. die Größe der Spalte ist größer als 900 byte Begrenzung auf einen index-Eintrag. Nur zu sagen. ... 🙂
  • genau das, was ich dachte...
  • guter Punkt, (ich bin mehr verwendet, um Oracle-und Postgres-wo ist dies kein problem)

InformationsquelleAutor ZigiZ | 2014-01-23
Schreibe einen Kommentar