Comparaison des classements SQL pour les classements Windows

Traductions disponibles Traductions disponibles
Numéro d'article: 322112 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Dans Microsoft SQL Server 2000 et Microsoft SQL Server 2005, un « classement » spécifie comment les chaînes sont comparées et triées et que le caractère ensemble est utilisé pour les données non-Unicode. SQL Server 2000 prend en charge deux types de classements :
  • Classements SQL
  • Classements Windows
Pour obtenir une description de chaque type de classement et d'une bonne vue d'ensemble de la façon de choisir un classement à utiliser, reportez-vous à la rubrique « Sélection des classements » dans la documentation en ligne de SQL Server 2000 ou reportez-vous à la rubrique « Types de classement » dans la documentation en ligne de SQL Server 2005.

Cet article traite des considérations supplémentaires qui peuvent influencer votre décision quant à la choisir un classement Windows ou un classement SQL lorsque vous installez SQL Server 2000 ou SQL Server 2005.

Plus d'informations

Sémantique de classement

Pour un classement Windows, une comparaison des données non-Unicode est implémentée à l'aide du même algorithme comme des données Unicode. Unicode et non-Unicode de tri sont compatibles avec les règles de comparaison de chaîne dans une version particulière de Windows. Cela garantit une cohérence entre les types de données dans SQL Server. Il permet également aux développeurs qui utilisent la fonction API Win32 CompareString pour trier les chaînes dans leur application à l'aide des mêmes règles que SQL Server utilise.

Dans un classement SQL, SQL Server définit des sémantiques de comparaison différentes pour les données non-Unicode. Cette sémantique de comparaison des bases SQL Server sur un SQL « ordre de tri ». Pour une mise en correspondance des ordres de tri pour les classements SQL, consultez la rubrique « Nom de classement SQL » dans la documentation en ligne de SQL Server.

Les règles de tri des données non-Unicode d'un classement SQL ne sont pas compatibles avec toute routine de tri est fourni par le système d'exploitation Microsoft Windows. Toutefois, le tri des données Unicode est compatible avec une version particulière des fenêtres de règles de tri. Étant donné que les règles de comparaison de données Unicode et de non-Unicode sont différents, lorsque vous utilisez un classement SQL que vous pouvez voir des résultats différents pour les comparaisons des caractères, selon le type de données sous-jacent. Par exemple, si vous utilisez le classement SQL « SQL_Latin1_General_CP1_CI_AS », la chaîne non Unicode « a-c » est inférieure à la chaîne « ab » car le trait d'union («-») est triée comme un caractère distinct qui précède « b ». Toutefois, si vous convertissez ces chaînes Unicode et que vous effectuer la même comparaison, Unicode chaîne a-c' est considérée comme étant supérieure à N'ab', car les règles de tri Unicode utilisent « tri par mot » qui ignore le trait d'union.

Performances de comparaison de chaîne

Les règles de tri Unicode sont beaucoup plus complexes que les règles d'un ordre de tri non - Unicode SQL. Lorsque SQL Server compare les données Unicode, les caractères sont affectés d'un poids qui est modifié de façon dynamique en fonction des paramètres régionaux du classement. Les données sont également modifiées par comparaison des paramètres de style comme largeur, accentuation ou respect de caractères Kana. Les routines de tri Unicode prend en charge les comportements de tri plus intelligentes telles que le tri de mots.

En outre, étant donné que les routines doivent gérer les données Unicode, ils sont suffisamment flexibles pour faire le tri et la comparaison de plusieurs caractères distincts mille, plutôt que le maximum de 255 caractères capable de gérer la plupart des ordres de tri de SQL Server. Pour ces raisons, le travail de comparaison de chaîne brute qui utilise des règles de tri Unicode est généralement plus coûteux en termes de temps et de cycles processeur qu'une comparaison de chaîne similaire qui utilise un ordre de tri non - Unicode SQL.

Ce que cela signifie pour les combinaisons possibles de types de données et les types de classement dans SQL Server :
  • Si vous vous êtes stocker et gérer vos données en types de données usingnon-Unicode (char, varchar, text) et à l'aide d'un classement SQL, les comparaisons de chaînes seront beperformed avec un ordre de tri non - Unicode SQL.
  • Si vous vous êtes stocker et gérer vos données en types de données usingnon-Unicode (char, varchar, text) et à l'aide d'un classement Windows, les comparaisons de chaînes se fera avec les règles de tri Unicode. Cela peut entraîner certains operationsthat sont anormalement dépendants performances pour prendre plus commande utilisation CPU plus qu'une opération similaire est effectuée avec une SQLcollation de tri des chaînes.
  • Si vous utilisez des types de données Unicode (nchar, nvarchar, ntext), il n'existe aucune différence dans le comportement de tri pour le SQL et les classements Windows. Les deux utilise Unicode, les règles de tri.
En règle générale, le degré de différence de performances entre les fenêtres et les classements SQL ne sera pas significatif. La différence n'apparaît que si une charge de travail est lié au processeur, au lieu de contrainte par e/s ou vitesse du réseau et la majeure partie de ce fardeau du processeur est provoquée par la charge de manipulation de chaîne ou les comparaisons effectuées dans SQL Server. Un exemple d'application dans lequel la différence de performances peut être prononcée est un système où une application transmet une valeur de chaîne longue à une procédure SQL Server stockées. La procédure stockée analyse ensuite la chaîne par l'intermédiaire de l'utilisation intensive de fonctions de manipulation de chaîne Transact-SQL comme CHARINDEX ou PATINDEX. Si la charge de travail est relativement unidimensionnel et il est dominé par les exécutions de cette procédure stockée de chaînes, la différence de performances entre un classement SQL et un classement Windows peut être perceptible. Toutefois, la conception de la plupart des applications n'entraîne pas une situation où la différence de performance est significative.

Recommandations

  1. Les classements SQL sont fournis pour les versions de withearlier de la compatibilité ascendante de SQL Server. Les classements Windows fournissent des stringcomparisons cohérentes pour à la fois Unicode et non-Unicode texte dans SQL Server ce arealso cohérente avec des comparaisons de chaînes dans le système d'exploitation Windows. ForAll toutes ces raisons, les classements Windows sont préférables à moins qu'il y a des problèmes de backwardcompatibility ou de performances spécifiques qui requièrent une SQLcollation.
  2. Si vous envisagez d'utiliser un classement SQL basé uniquement sur les caractéristiques de theperformance d'un classement SQL, sachez que theperformance de la plupart des applications ne bénéficiant pas considérablement d'un classement changein. Assurez-vous que vous avez isolé des requêtes qui affichent un classement de SQL a des avantages. Dès que vous avez identifié des requêtes concernées, envisagez des solutions alternatives de réticules du centre à une modification de classement. Deux de ces alternatives peuvent fournir un gain de performances est supérieur à ce que vous verrez si vous modifiez le classement de l'instance à un classement SQL :
    1. Si la surcharge pour les classements Windows qui est tracée sur les routines de Transact-SQL qui effectuent l'analyse ou manipulation de chaîne explicite, et si vous utilisez des types de données non-Unicode, vous souhaiterez peut-être spécifier un classement SQL ou un classement Windows binaire pour l'opération qui est exécutée fréquemment et qui est plus coûteux. Supposons que vous utilisiez la fonction PATINDEX pour déterminer si une colonne de texte dans une table contient le caractère « x ». Si vous forcez un classement SQL pour cette opération de comparaison particulière et que vous continuez à utiliser un classement Windows pour le reste de la base de données et de l'application, vous n'êtes pas obligé de modifier le classement de l'ensemble du système :
      SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
    2. Si la surcharge pour les classements Windows est tracée pour les requêtes plus banale qui n'utilisent pas de fonctions de manipulation de chaîne complexe, index amélioré ou requête conceptions peuvent fournir des améliorations que ceux dwarf vous verrez en modifiant un classement SQL. Une requête qui peut être satisfaite par hautement sélectifs cherche sur les index appropriés ne seront pas sensibles aux modifications mineures dans le coût de comparaison de chaîne. En revanche, une petite quantité de charge mémoire par comparaison de chaînes peut s'accumuler rapidement dans une requête qui doit effectuer une analyse de table et de comparer une valeur particulière à chacun des millions de lignes. Si vous empêchez grande table ou index des analyses sur le plan de requête en changeant l'indexation ou la requête elle-même, votre requête effectue beaucoup plus rapidement que s'il s'agissait de si vous remplacez un classement SQL.
Remarque : Il existe un troisième type de classement qui est une variante d'un classement SQL. Ce classement tiers est appelé un « compatibilité classement » ou un "remplacement. » Un classement de compatibilité est un ensemble de règles de tri et de comparaison qui n'ont pas un nom de classement prédéfini dans SQL Server 2000. Par exemple, si vous configurez SQL Server 7.0 avec un paramètre incohérent pour les données non-Unicode et Unicode, avoir un classement de compatibilité lorsque vous mettez à niveau cette instance de SQL Server 7.0 vers SQL Server 2000. Dans la discussion plus haut dans cet article, les informations sur les classements SQL s'applique également aux classements de compatibilité.

Pour plus d'informations sur les classements de compatibilité, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
270042 INF: Description des classements de compatibilité de SQL Server

Propriétés

Numéro d'article: 322112 - Dernière mise à jour: samedi 23 novembre 2013 - Version: 9.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Mots-clés : 
kbhowto kbinfo kbmt KB322112 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d?une traduction incorrecte du contenu ou de son utilisation par les clients.
La version anglaise de cet article est la suivante: 322112
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com