Confronto tra regole di confronto SQL per le regole di confronto di Windows

Traduzione articoli Traduzione articoli
Identificativo articolo: 322112 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In Microsoft SQL Server 2000 e nelle finestra di Microsoft SQL Server 2005, "un confronto" Specifica come stringhe vengono confrontate e ordinate e il carattere impostato Ŕ destinato a dati non Unicode. SQL Server 2000 supporta due tipi di regole di confronto:
  • Le regole di confronto SQL
  • Regole di confronto di Windows
Per una descrizione di ogni tipo di regole di confronto e una buona Panoramica di come decidere quali regole di confronto da utilizzare, vedere l'argomento "Selezione regole di confronto" nella documentazione in linea di SQL Server 2000 oppure vedere l'argomento "Tipi di regole di confronto" nella documentazione in linea di SQL Server 2005 (informazioni in lingua inglese).

Questo articolo vengono descritti ulteriori considerazioni che possono influenzare la scelta di un confronto Windows o di un set di regole di confronto SQL quando si installa SQL Server 2000 o SQL Server 2005 la scelta.

Informazioni

Semantica di confronto

Per un confronto di Windows, un confronto di dati non Unicode viene implementato utilizzando lo stesso algoritmo i dati Unicode. Unicode e l'ordinamento non Unicode sono compatibili con le regole di confronto di stringa in una particolare versione di Windows. In questo modo la coerenza tra tipi di dati in SQL Server. Consente inoltre agli sviluppatori che utilizzano la funzione di CompareString API Win32 per eseguire l'ordinamento stringhe nella propria applicazione utilizzando le stesse regole utilizzato da SQL Server.

Nelle regole di confronto SQL, SQL Server definisce la semantica di confronto diverse per dati non Unicode. SQL Server basa queste semantica di confronto su un SQL "ordinamento". Per un mapping di ordinamento per le regole di confronto SQL, vedere l'argomento "Nome regole di confronto SQL" nella documentazione in linea di SQL Server.

Regole di regole di confronto SQL per l'ordinamento dei dati non Unicode sono incompatibili con qualsiasi routine di ordinamento che viene fornita da Microsoft Windows per i sistema operativo; tuttavia, l'ordinamento dei dati Unicode Ŕ compatibile con una particolare versione di Windows le regole di ordinamento. PerchÚ le regole di confronto per non Unicode e i dati Unicode sono diverse, quando si utilizza un set di regole di confronto SQL Ŕ possibile visualizzare risultati differenti per i confronti dei caratteri stessi, a seconda del tipo sottostante di dati. Ad esempio, se si utilizza l'istruzione SQL regole di confronto "SQL_Latin1_General_CP1_CI_AS", la stringa non Unicode "a-c" Ŕ minore della stringa 'ab' perchÚ il segno meno ("-") viene ordinato come carattere distinto che precede "b". Tuttavia, se si converte le stringhe Unicode e si esegue il confronto stesso, la stringa Unicode N'a-c "Ŕ considerata maggiore N'ab' perchÚ l'ordinamento Unicode delle regole di utilizzare un"ordinamento per parola"che ignora il trattino.

Prestazioni di confronto di stringa

Le regole di ordinamento Unicode sono molto pi¨ complesse di regole di ordinamento non Unicode SQL. Quando SQL Server confronta i dati Unicode, i caratteri vengono assegnati un peso viene modificato in modo dinamico in base alle impostazioni internazionali di regole di confronto. I dati anche vengono modificati a confronto le impostazioni di stile, ad esempio larghezza, accenti o riservatezza di kana. Le routine di ordinamento Unicode supportano pi¨ intelligenti comportamenti di ordinamento come l'ordinamento di parola.

Inoltre, poichÚ la routine devono gestire i dati Unicode, sono sufficientemente flessibile per gestire l'ordinamento e il confronto dei diversi caratteri distinti delle migliaia, anzichÚ di al massimo 255 caratteri che possono gestire la maggior parte dei tipi di ordinamento SQL Server. Per questi motivi, il lavoro di confronto di stringa non elaborati che utilizza regole di ordinamento Unicode Ŕ in genere pi¨ costosa in termini di tempo e i cicli della CPU un confronto di stringa simile che utilizza un tipo di ordinamento non Unicode SQL.

Ci˛ significa per le possibili combinazioni di tipi di dati e tipi di regole di confronto in SQL Server:
  • Se si memorizzazione e la gestione dei dati utilizzando i tipi di dati non Unicode ( char , varchar , testo ) e si utilizza un set di regole di confronto SQL, i confronti tra stringhe vengono eseguiti con un criterio di ordinamento non Unicode SQL.
  • Se si memorizzazione e la gestione dei dati utilizzando i tipi di dati non Unicode ( char , varchar , testo ) e si utilizza un confronto Windows, i confronti tra stringhe vengono eseguiti con le regole di ordinamento Unicode. Ci˛ potrebbe causare alcune operazioni insolitamente dipendono stringa ordinamento le prestazioni per richiedere pi¨ tempo e per utilizzo CPU in pi¨ rispetto a un'operazione simile che viene eseguita un SQL delle regole di confronto.
  • Se si utilizza dati di tipo Unicode ( nchar , nvarchar , ntext ), non vi Ŕ alcuna differenza nel comportamento ordinamento per l'istruzione SQL e regole di confronto Windows. Entrambi utilizzeranno Unicode di regole di ordinamento.
In genere, il grado di differenza tra Windows e regole di confronto SQL le prestazioni non Ŕ significativo. La differenza viene visualizzata solo se un carico di lavoro Ŕ CPU, anzichÚ da vincolato I/O o la velocitÓ della rete e la maggior parte di questo carico della CPU Ŕ causato dall'overhead di manipolazione di stringhe o confronti tra eseguiti in SQL Server. Un esempio di un'applicazione in cui potrebbe essere evidente la differenza di prestazioni Ŕ un sistema in cui un'applicazione passa un valore stringa lungo una stored procedure SQL Server. La stored procedure viene quindi analizza la stringa mediante l'utilizzo completo di funzioni di Modifica stringa Transact-SQL quali CHARINDEX e PATINDEX. Se il carico di lavoro Ŕ piuttosto unidimensionale Ŕ dominated per esecuzioni di questa stringa l'analisi di stored procedure, la differenza nelle prestazioni tra un set di regole di confronto SQL e un confronto Windows potrebbe essere evidente. Tuttavia, alla progettazione della maggior parte delle applicazioni non causare una situazione in cui la differenza di prestazioni Ŕ notevole.

Suggerimenti

  1. Le regole di confronto SQL vengono fornite per garantire la compatibilitÓ con le versioni precedenti con le versioni precedenti di SQL Server. Le regole di confronto di Windows forniscono i confronti tra stringhe coerente per entrambi Unicode e del testo di formato non Unicode in SQL Server sono inoltre coerenti con confronti tra stringhe nel sistema operativo Windows. Per questi motivi, le regole di confronto di Windows sono preferiti se non vi sono problemi di compatibilitÓ con le versioni precedenti o problemi di prestazioni specifiche che richiedono un SQL delle regole di confronto.
  2. Se si intende un confronto SQL basato solo su caratteristiche delle prestazioni di un set di regole di confronto SQL, tenere presente che le prestazioni delle applicazioni la maggior parte dei non trae alcun vantaggio in modo significativo da una modifica nelle regole di confronto. Assicurarsi che si sono isolato le query che mostrano un vantaggio da un set di regole di confronto SQL. Non appena si identifica le query interessate, prendere in considerazione le seguenti alternative a una modifica nelle regole di confronto. Entrambe queste due alternative pu˛ fornire un miglioramento delle prestazioni maggiore di quello che verrÓ visualizzato se Ŕ modificato il confronto di istanza per un set di regole di confronto SQL:
    1. Se il sovraccarico per regole di confronto Windows viene tracciato a routine Transact-SQL che eseguono la manipolazione esplicita o l'analisi e se si utilizza tipi di dati non Unicode, sarÓ necessario specificare un set di regole di confronto SQL o un confronto binario di Windows per l'operazione che viene eseguita spesso e che sia pi¨ costosi. Si supponga di che utilizza la funzione PATINDEX per determinare se una colonna di testo in una tabella contiene il carattere "x". Se si impone un confronto di SQL per tale operazione di confronto specifico e continua a utilizzare un Windows regole di confronto per il resto del database e l'applicazione, non si dispone modificare le regole di confronto per l'intero sistema:
      SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
    2. Se il sovraccarico per regole di confronto Windows Ŕ stato analizzato per le query pi¨ noioso che non utilizzano le funzioni di Modifica stringa complessa, migliorate indice o una query schemi potrebbero fornire diversi miglioramenti che dwarf quelli si vedrÓ modificando in un set di regole di confronto SQL. Una query che pu˛ essere soddisfatte per altamente selettivi Cerca su indici appropriati non saranno pi¨ sensibili alle modifiche minori nel costo di confronto di stringa. Al contrario, una piccola quantitÓ di overhead per il confronto tra stringhe possibile aggiungere rapidamente in una query che deve eseguire una scansione di tabella e confrontare un valore specifico a ciascuna delle milioni di righe. Se si impedisce la tabella di grandi dimensioni o indice analisi dal piano di query modificando l'indicizzazione o la query stessa, la query verrÓ eseguite pi¨ velocemente rispetto a quelle se si modifica in un set di regole di confronto SQL.
Nota Non vi Ŕ un tipo terzo di regole di confronto che Ŕ una variante di un SQL delle regole di confronto. Questo terzo regole di confronto Ŕ detta un "confronto di compatibilitÓ" o un "confronto obsolete". Un confronto di compatibilitÓ Ŕ un insieme di regole di ordinamento e confronto privi di un nome di regole di confronto predefinite di SQL Server 2000. Ad esempio, se si imposta SQL Server 7.0 con un'impostazione incoerente distinzione tra maiuscole e minuscole per Unicode e di dati non Unicode, sarÓ necessario un confronto di compatibilitÓ quando si esegue l'aggiornamento questa istanza di SQL Server 7.0 a SQL Server 2000. Nella descrizione riportata in precedenza in questo articolo, le informazioni sulle regole di confronto SQL si applicano anche a regole di confronto di compatibilitÓ.

Per ulteriori informazioni sulle regole di confronto di compatibilitÓ, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
270042INF: Descrizione delle regole di confronto compatibilitÓ di SQL Server

ProprietÓ

Identificativo articolo: 322112 - Ultima modifica: martedý 13 dicembre 2005 - Revisione: 8.1
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • 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
Chiavi:á
kbmt kbhowto kbinfo KB322112 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 322112
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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