Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img
02 de Noviembre, 2011 · ORDER-BY-DISTINCT-INDICES-T-SQL-Server

índices en las columnas ORDER-BY/GROUP-BY/DISTINCT. INDICES. Técnicas y Consejos fáciles. T-SQL Server. VII

Las operaciones ORDER-BY, GROUP-BY y DISTINCT son todas tipos de ordenación. El procesador de consultas de SQL Server implementa la ordenación de dos modos distintos. Si los registros ya están ordenados por un índice, el procesador sólo tiene que usar el índice. De lo contrario, el procesador debe utilizar una tabla de trabajo temporal para ordenar primero los registros. Esta ordenación preliminar puede provocar retrasos iniciales considerables en dispositivos con una CPU lenta y memoria limitada, y debería evitarse si el tiempo de respuesta es importante.

En el contexto de índice con varias columnas, para que ORDER-BY o GROUP-BY tengan en cuenta un índice concreto, las columnas ORDER-BY o GROUP-BY deben coincidir con el conjunto de prefijos de columnas de índice en el orden exacto. Por ejemplo, el índice CREATE INDEX Emp_Name ON Employees ("Last Name" ASC, "First Name" ASC) puede ayudar a optimizar las siguientes consultas:

·         ... ORDER BY / GROUP BY "Last Name" ...

·         ... ORDER BY / GROUP BY "Last Name", "First Name" ...

No ayudará a optimizar:

·         ... ORDER BY / GROUP BY "First Name" ...

·         ... ORDER BY / GROUP BY "First Name", "Last Name" ...

Para que una operación DISTINCT tenga en cuenta un índice de varias columnas, la lista de proyección debe coincidir con todas las columnas de índice, aunque no es necesario que estén en el orden exacto. El índice anterior puede ayudar a optimizar las siguientes consultas:

·         ... DISTINCT "Last Name", "First Name" ...

·         ... DISTINCT "First Name", "Last Name" ...

No ayudará a optimizar:

·         ... DISTINCT "First Name" ...

·         ... DISTINCT "Last Name" ...

Si la consulta siempre devuelve filas únicas, no especifique la palabra clave DISTINCT, ya que sólo aumenta la sobrecarga.

Hay que tener en cuenta que cada vez que ponemos agrupaciones del tipo ORDER-BY, GROUP-BY y DISTINCT, podemos estar penalizando el rendimiento si no tenemos los índices adecuados y muchas veces estas agrupaciones que usamos no tienen sentido ya que se pueden hacer desde el reporte o la aplicación. En ocasiones es mejor no dar una sobrecarga el motor, ya que he visto como quedan resuelto algunos temas de performance en querys simplemente por eliminar estas agrupaciones, recordemos que las agrupaciones las podemos hacer muchas veces en la grilla de nuestra aplicación sin castigar al motor de base.

Se recomienda la lectura:

 La importancia de los INDICES. Tecnicas T-SQL Server.

Crear índices muy selectivos. INDICES. Técnicas y Consejos fáciles. T-SQL Server. II

Crear índices de varias columnas. INDICES. Técnicas y Consejos fáciles. T-SQL Server. III

Evitar el indizado de tablas pequeñas. INDICES. Técnicas y Consejos fáciles. T-SQL Server. IV

Clave primaria y externas. INDICES. Técnicas y Consejos fáciles. T-SQL Server. V

Indices con cláusulas de filtro.INDICES. Técnicas y Consejos fáciles. T-SQL Server. VI

 En definitiva, puede mejorar el rendimiento de la aplicación SQL Server, optimizando las consultas que utiliza. En los próximos días publicaré en mi blog (este mismo) otras técnicas fáciles que pueden aplicarse para optimizar el rendimiento de las consultas.



A puntes y recopilaciones de Norman M. Pardell

 

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

publicado por normanmpardell a las 04:51 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Como renombrar una instancia de SQL Server. sp_dropserver. sp_addserver
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad