Comparar intercalaciones de SQL para intercalaciones de Windows

Seleccione idioma Seleccione idioma
Id. de artículo: 322112 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En Microsoft SQL Server 2000 y en Microsoft SQL Server 2005, "intercalación" Especifica cómo se comparan cadenas y se ordenan y qué carácter conjunto se utiliza para datos no Unicode. SQL Server 2000 admite dos tipos de intercalaciones:
  • Intercalaciones de SQL
  • Intercalaciones de Windows
Para obtener una descripción de cada tipo de intercalación y una buena introducción de cómo decidir la intercalación que utilizar, consulte el tema "Intercalaciones de seleccionar" en libros en pantalla de SQL Server 2000 o vea el tema "Intercalación Types" en libros en pantalla de SQL Server 2005.

Este artículo describen consideraciones adicionales que pueden afectar a su decisión sobre si desea elegir una intercalación de Windows o una intercalación de SQL al instalar SQL Server 2000 o SQL Server 2005.

Más información

Semántica de intercalación

Para una intercalación de Windows, una comparación de datos que no son Unicode se implementa utilizando el mismo algoritmo como datos Unicode. Unicode y la ordenación Unicode no son compatibles con las reglas de comparación de cadena de una determinada versión de Windows. Esto proporciona coherencia a través de tipos de datos en SQL Server. También permite que los desarrolladores que utilizan la función de API de Win32 CompareString para ordenar las cadenas de su aplicación mediante las mismas reglas que utiliza SQL Server.

En una intercalación de SQL, SQL Server define la semántica de comparación distintos para datos no Unicode. SQL Server se basa esta semántica de comparación en un SQL "orden". Para una asignación de ordenación para las intercalaciones de SQL, vea el tema "Nombre de intercalación SQL" en los libros en pantalla de SQL Server.

Reglas de una intercalación SQL para ordenar los datos que no son Unicode son incompatibles con cualquier rutina de ordenación proporcionado por Microsoft Windows sistema operativo; sin embargo, la ordenación de datos Unicode es compatible con una versión determinada de la Windows las reglas de ordenación. Porque las reglas de comparación para que no son Unicode y datos Unicode son diferentes, al utilizar una intercalación de SQL podría obtener resultados diferentes para las comparaciones de los mismos caracteres, dependiendo del tipo de datos subyacente. Por ejemplo, si está utilizando el SQL intercalación "SQL_Latin1_General_CP1_CI_AS", la cadena que no son Unicode 'c' es menor que la cadena 'ab' porque el guión ("-") se ordena como un carácter independiente que precede a "b". Sin embargo, si convertir estas cadenas en Unicode y realizar la comparación misma, la cadena Unicode N'a-c 'se considera mayor que N'ab' porque la ordenación Unicode reglas utilice "una ordenación por palabra" que omite el guión.

Rendimiento de la comparación de cadenas

Las reglas de ordenación Unicode son mucho más complejas que las reglas para un criterio de ordenación que no sean Unicode SQL. Cuando SQL Server compara los datos Unicode, los caracteres se asignan un peso que se modifica dinámicamente según la configuración regional de intercalación. Los datos también se modifican por comparación configuración de estilo como ancho, énfasis o sensibilidad de Kana. Las rutinas de ordenación Unicode admiten comportamientos de ordenación más inteligentes como la ordenación de palabras.

Además, puesto que las rutinas deben controlar datos Unicode, son lo suficientemente flexibles para controlar la ordenación y comparación de varios caracteres distintos miles, en lugar de los 255 caracteres máximo que pueden controlar la mayoría de los criterios de ordenación SQL Server. Por estos motivos, el trabajo de comparación de cadena sin formato que utiliza las reglas de ordenación Unicode es normalmente más costoso en términos de tiempo y ciclos de CPU que una comparación de cadenas similar que utiliza un orden que no sean Unicode SQL.

Esto significa para las combinaciones posibles de los tipos de datos y tipos de intercalación de SQL Server:
  • Si son almacenar y controlar los datos utilizando tipos de datos que no son Unicode ( char , varchar , texto ), y estás utilizando una intercalación de SQL, se realizarán las comparaciones de cadenas con un criterio de ordenación que no sean Unicode SQL.
  • Si se almacenar y controlar los datos utilizando tipos de datos que no son Unicode ( char , varchar , texto ), y está utilizando una intercalación de Windows, las comparaciones de cadenas se realizarán las reglas de ordenación de Unicode. Esto puede provocar que ciertas operaciones que dependen inusualmente cadena ordenación rendimiento tardar y utilizar más CPU que una operación similar que se realiza con un SQL intercalación.
  • Si estás utilizando los tipos de datos Unicode ( nchar , nvarchar , ntext ), no hay ninguna diferencia en el comportamiento de ordenación para la instrucción SQL y las intercalaciones de Windows. Ambos utilizará las reglas de ordenación de Unicode.
Generalmente, el grado de diferencia de rendimiento entre Windows y las intercalaciones de SQL no serán importante. La diferencia sólo aparece si una carga de trabajo es dependiente de CPU, en lugar que se restringe por E/s o por velocidad de la red y la mayor parte de esta carga de CPU está causado por la sobrecarga de manipulación de cadenas o las comparaciones realizadas en SQL Server. Un ejemplo de una aplicación donde podría ser pronunciada la diferencia de rendimiento es un sistema donde una aplicación pasa un valor de cadena larga a un procedimiento almacenado de SQL Server. El procedimiento almacenado, a continuación, analiza la cadena mediante un amplio uso de funciones de manipulación de cadena de Transact-SQL como CHARINDEX o PATINDEX. Si la carga de trabajo es bastante unidimensional y está dominado por ejecuciones de esta cadena analizar el procedimiento almacenado, la diferencia de rendimiento entre una intercalación de SQL y una intercalación de Windows pueden apreciable. Sin embargo, el diseño de la mayoría de las aplicaciones no conduzca a una situación donde la diferencia de rendimiento es importante.

Recomendaciones

  1. Las intercalaciones de SQL se proporcionan para compatibilidad con versiones anteriores de SQL Server. Las intercalaciones de Windows proporcionan comparaciones de cadena coherente de Unicode y de texto que no son Unicode en SQL Server que también son coherentes con las comparaciones de cadenas en el sistema operativo. Por estos motivos, se prefieren las intercalaciones de Windows a menos que haya problemas de compatibilidad con versiones anteriores o problemas de rendimiento específicos que requieren un SQL intercalación.
  2. Si está pensando en una intercalación de SQL según sólo las características de rendimiento de una intercalación de SQL, en cuenta que el rendimiento de la mayoría de las aplicaciones no se beneficia considerablemente de un cambio en la intercalación. Asegúrese de que haya aislado las consultas que muestran una ventaja de una intercalación de SQL. Tan pronto como identificar las consultas afectadas, considere las siguientes alternativas a un cambio en intercalación. Dos de estas alternativas pueden proporcionar una ventaja de rendimiento es mayor de lo que verá si cambiar la intercalación de instancia a una intercalación de SQL:
    1. Si la sobrecarga de las intercalaciones de Windows realiza el seguimiento a rutinas de Transact-SQL que realizan la manipulación de cadena explícitos o de análisis y si estás utilizando tipos de datos que no son Unicode, desea especificar una intercalación de SQL o una intercalación de Windows binaria para la operación que se ejecuta con frecuencia y que es más caro. Suponga que utiliza la función PATINDEX para determinar si una columna de texto de una tabla contiene el carácter "x". Si se fuerza una intercalación de SQL para esa operación de comparación concreto y seguir utilizando un Windows intercalación para el resto de la base de datos y la aplicación, no es necesario cambiar la intercalación para todo el sistema:
      SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
    2. Si la sobrecarga de las intercalaciones de Windows realiza el seguimiento a las consultas más mundana que no utilizan funciones de manipulación de cadena compleja, índice mejorado o consulta diseños pueden proporcionar mejoras que los dwarf vería cambiando a una intercalación de SQL. Una consulta que se puede satisfacer por muy selectiva búsquedas en índices adecuados no será sensibles a los cambios menores en costo de comparación de cadena. En contraste, una pequeña cantidad de sobrecarga por comparación de cadenas puede agregar rápidamente en una consulta que debe realizar un recorrido de tabla y comparar un valor determinado a cada uno de millones de filas. Si evitar gran tabla o índice las exploraciones desde el plan de consulta cambiando la indización o la propia consulta, la consulta realizará mucho más rápido que lo haría si cambia a una intercalación de SQL.
Nota Hay un tercer tipo de intercalación que es una variación de un SQL intercalación. Esta tercera intercalación se conoce como "intercalación de compatibilidad" o una "intercalación obsoletas". Una intercalación de compatibilidad es un conjunto de reglas de ordenación y comparación que no tienen un nombre de intercalación predefinidos en SQL Server 2000. Por ejemplo, si debe configurar SQL Server 7.0 con una configuración incoherente distinción entre mayúsculas y minúsculas para Unicode y los datos no Unicode, tendrá una intercalación de compatibilidad cuando se actualiza esta instancia de SQL Server 7.0 a SQL Server 2000. En la discusión anteriormente en este artículo, la información acerca de intercalaciones de SQL también se aplica a las intercalaciones de compatibilidad.

Para obtener más información acerca de intercalaciones de compatibilidad, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
270042INF: Descripción de intercalaciones de compatibilidad de SQL Server

Propiedades

Id. de artículo: 322112 - Última revisión: martes, 13 de diciembre de 2005 - Versión: 8.1
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbhowto kbinfo KB322112 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 322112

Enviar comentarios

 

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