J'ai demandé à Google mais je suis toujours confus.Indexez une colonne varchar
1) Y a-t-il un problème lors de l'indexation d'une colonne Varchar? Quand je ne devrais pas, et quand je devrais
2) Indexer une colonne de char VS Varchar.
Merci
J'ai demandé à Google mais je suis toujours confus.Indexez une colonne varchar
1) Y a-t-il un problème lors de l'indexation d'une colonne Varchar? Quand je ne devrais pas, et quand je devrais
2) Indexer une colonne de char VS Varchar.
Merci
1 - Index si vous interrogez et il est assez sélectif. Si c'est une colonne où 90% des valeurs sont les mêmes, il n'y aura pas beaucoup de points.
2 - Ce n'est pas une question, mais je suppose que vous voulez savoir si vous le devriez. Oui, si vous l'interrogez et qu'il répond aux critères ci-dessus.
En effet, l'indexation (N) des colonnes varchar fonctionne bien. Seulement gotcha serait à surveiller pour la limitation de largeur de 900 octets – StuartLC
Il existe des problèmes d'index avec varchar (max) et nvarchar (max), c'est pourquoi ils ne devraient pas être utilisés à moins que vous ayez l'intention de déborder la taille des varchar et nvarchar ordinaires champ. – HLGEM
@HLGEM - pouvez-vous élaborer? – JNK
la performance générale
En théorie/conception, vous avez un modèle logique où, par exemple, le nom d'utilisateur est unique. Cependant, au moment de la mise en œuvre, vous savez que cela coûte cher (cas, accents, longueur, etc.) par rapport à l'utilisation d'une colonne de substitution "userid" qui est plus efficace en tant qu'index. Cela dit, vous auriez un index sur le nom, car il devrait être unique. La différence serait là où vous utilisez cet index: si c'est dans une table enfant en tant que colonne de clé étrangère, ce n'est pas une bonne idée. Ou en tant qu'index en cluster.
En tant qu'index unique pour une table sans FK, alors ce n'est ni ici ni là. Enfin, je voudrais juste utiliser le char/varchar pour des choses comme le code ISO ou les codes de devise (DE, EN, GBP, CHF, etc.). Mais mon seuil varie pour être honnête ...
varchar
est d'environ 50 caractères max.char
vs varchar
sont de taille fixe par rapport à taille variable (ie. char(100)
) prend toujours 100 octets dans la page de données, varchar(100)
prend jusqu'à 100)
Si Vous pouvez soutenir une réponse existante, ou avoir quelque chose à ajouter, s'il vous plaît faites-le. – Costa