¿Qué es un índice en SQL?

¿Qué es un índice en SQL? ¿Puedes explicarlo o hacer una referencia para entenderlo claramente?

¿Dónde debo utilizar un índice?

Solución

Un índice se utiliza para acelerar la búsqueda en la base de datos. MySQL tiene una buena documentación sobre el tema (que también es relevante para otros servidores SQL): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

Un índice puede ser utilizado para encontrar eficientemente todas las filas que coincidan con alguna columna en su consulta y luego recorrer sólo ese subconjunto de la tabla para encontrar coincidencias exactas. Si no tiene índices en ninguna columna de la cláusula WHERE, el servidor SQL tiene que recorrer toda la tabla y comprobar cada fila para ver si coincide, lo que puede ser una operación lenta en tablas grandes.

El índice también puede ser un índice UNIQUE, lo que significa que no puede tener valores duplicados en esa columna, o una PRIMARY KEY que en algunos motores de almacenamiento define en qué lugar del archivo de la base de datos se almacena el valor.

En MySQL puedes utilizar EXPLAIN delante de tu sentencia SELECT para ver si tu consulta hace uso de algún índice. Esto es un buen comienzo para solucionar problemas de rendimiento. Lea más aquí: http://dev.mysql.com/doc/refman/5.0/en/explain.html

Comentarios (0)

Un índice se utiliza para acelerar el rendimiento de las consultas. Lo hace reduciendo el número de páginas de datos de la base de datos que tienen que ser visitadas/exploradas.

En SQL Server, un índice agrupado determina el orden físico de los datos en una tabla. Sólo puede haber un índice agrupado por tabla (el índice agrupado ES la tabla). Todos los demás índices de una tabla se denominan no agrupados.

Comentarios (0)

Un [índice][1] se utiliza por varias razones. La razón principal es acelerar las consultas para poder obtener filas u ordenarlas más rápidamente. Otra razón es definir una clave primaria o un índice único que garantice que ninguna otra columna tenga los mismos valores.

[1]: http://en.wikipedia.org/wiki/Index_(base de datos)

Comentarios (0)