Una de ella es: Tener un buen diseño de la base de datos. La estructura de una base de datos que sea fácil de usar y de realizar consultas.
Un componente de SQL Server, que permite que se devuelvan los datos rápidamente en una consulta, son los índices de las tablas. Usar índices que sean apropiados para la aplicación, le permite al motor de la base de datos minimizar la cantidad de trabajo necesario para obtener los datos. Contrariamente, si la base de datos tiene demasiados índices, la actualización y la inserción de datos pueden empeorar, ya que SQL Server consumirá ciclos de CPU y de E/S para actualizar todos los índices que sean necesario.
El rendimiento es otra de la cosas. Una medición del rendimiento es qué tan rápidamente su aplicación le permite recuperar y actualizar los datos.
Existen diferentes tipos de indices en MSSQL Server:
- Indices unicos(Unique)
- Indices agrupados(Clustered)
- Indices no unicos(Non-Unique)
- Indices no agrupados(Non-Clustered)
CREATE tipo_de_indice INDEX nombre_indice ON tabla(campo_indice);
Indices Unicos(Unique)
La creación de un índice único garantiza que los datos no se dupliquen en la Tabla.
Debe crearse una restricción UNIQUE en la columna cuando el objetivo es la integridad de los datos.
Ejemplo: CREATE UNIQUE INDEX ix_libros_codigo ON libros(codigo);
Indices Agrupados(Clustered)
Se utilizan para campos por los que se realizan busquedas con frecuencia o se accede siguiendo un orden. Los registros con el mismo valor de campo se agrupan juntos. Un índice agrupado determina la secuencia de almacenamiento de los registros en una tabla.
Una tabla sólo puede tener UN índice agrupado.
Los indices agrupados son similares a una guia telefónica.
Ejemplo: CREATE CLUSTERED INDEX ix_libros_codigo ON libros(codigo);
Indices No Unicos(Non-Unique)
Son utilizados cuando no se tiene PRIMARY KEY ni indice UNIQUE, en ese caso se puede crear indices NON Unique para satisfacer las consultas SQL, y conseguir un buen rendimiento de la base de datos, pero sin tener posibilidad de identificar cada fila de forma unívoca.
Ejemplo: CREATE INDEX ix_libros_codigo ON libros(codigo);
Indices No Agrupados(Non-Clustered)
Un índice no agrupado se emplea cuando se realizan distintos tipos de busquedas frecuentemente, con campos en los que los datos son únicos. Una tabla puede tener hasta 249 índices no agrupados.
Los indices No Agrupados es como el índice de un libro.
"La diferencia básica entre índices agrupados y no agrupados es que los registros de un índice agrupado están ordenados y almacenados de forma secuencial en función de su clave".
Ejemplo: CREATE NONCLUSTERED INDEX ix_libros_titulo ON libros(titulo);
Otros ejemplos:
- Indices con columnas de una tabla combinada:
CREATE INDEX ix_libros_autoreditorial ON libros(autor,editorial);
- Puede especificarse que un índice sea agrupado o no agrupado al agregar estas restricciones.
Agregamos una restricción "primary key" al campo "codigo" de la tabla "libros" especificando que cree un índice NO agrupado:
ALTER TABLE libros ADD CONSTRAINT PK_libros_codigo PRIMARY KEY nonclustered (codigo);