2010-06-02 26 views

Respuesta

224

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

Un índice puede ser usado para encontrar de manera eficiente toda la fila coinciden con alguna columna en la consulta y luego caminar a través de solamente el 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 verificar 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 haber valores duplicados en esa columna, o un PRIMARY KEY que en algunos motores de almacenamiento define en qué parte del archivo de base de datos se almacena el valor.

En MySQL puede usar EXPLAIN en frente de su declaración SELECT para ver si su consulta utilizará algún índice. Este es un buen comienzo para solucionar problemas de rendimiento. Lea más aquí: http://dev.mysql.com/doc/refman/5.0/en/explain.html

68

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 deben visitarse/escanearse.

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

3

Se usa un index por varias razones diferentes. La razón principal es acelerar la consulta para que pueda obtener filas u ordenar filas más rápido. Otra razón es definir una clave principal o un índice único que garantizará que ninguna otra columna tenga los mismos valores.

3

Si está utilizando SQL Server, ¡uno de los mejores recursos es su propio libro en línea que viene con la instalación! Es el primer lugar al que me referiría para CUALQUIER tema relacionado con SQL Server.

Si es práctico "¿cómo debo hacer esto?" tipo de preguntas, entonces StackOverflow sería un mejor lugar para preguntar.

Además, no he vuelto por un tiempo, pero sqlservercentral.com solía ser uno de los principales sitios relacionados con SQL Server.

14

Bueno en el índice general es B-tree. Hay dos tipos de índices: agrupados y no agrupados.

agrupados índice crea un orden físico de filas (puede ser solo uno y en la mayoría de los casos también es una clave principal; si crea una clave principal en la tabla también crea índices agrupados en esta tabla).

El índice no agrupado también es un árbol binario pero no crea un orden físico de filas. Por lo tanto, los nodos hoja del índice no agrupado contienen PK (si existe) o índice de fila.

Los índices se utilizan para aumentar la velocidad de búsqueda. Porque la complejidad es de O (log N). Índices es un tema muy grande e interesante. Puedo decir que la creación de índices en una gran base de datos es a veces un tipo de arte.

+5

, en general, es un árbol B en vez de un árbol binario. –

104

Un índice agrupado es como el contenido de una guía telefónica. Puedes abrir el libro en 'Hilditch, David' y encontrar toda la información para todos los 'Hilditch's uno al lado del otro. Aquí las claves para el índice agrupado son (apellido, nombre).

Esto hace que los índices agrupados sean ideales para recuperar muchos datos basados ​​en consultas basadas en rangos dado que todos los datos se encuentran uno al lado del otro.

Dado que el índice agrupado está realmente relacionado con la forma en que se almacenan los datos, solo hay uno posible por tabla (aunque puede hacer trampas para simular múltiples índices agrupados).

Un índice no agrupado es diferente ya que puede tener muchos de ellos y luego apuntan a los datos en el índice agrupado. Podría haber, por ejemplo, un índice no agrupado en la parte posterior de una guía telefónica que está codificado (ciudad, dirección)

Imagínese si tuviera que buscar a través de la guía telefónica a todas las personas que viven en 'Londres' - con solo la agrupación índice, debe buscar cada elemento de la guía telefónica, ya que la clave del índice agrupado está activada (apellido, nombre) y, como resultado, las personas que viven en Londres están distribuidas de forma aleatoria en todo el índice.

Si tiene un índice no agrupado en (ciudad), estas consultas pueden realizarse mucho más rápidamente.

Espero que ayude!

+41

Creo que la analogía de la guía telefónica es excelente para principiantes ... ¡siempre que sean lo suficientemente viejos como para saber lo que es una guía telefónica! ;) – chrnola

+3

Muy buena explicación de la necesidad de índice no agrupado –

+0

@chrnola ahora me siento viejo :( – Guerrilla

33

Los índices son para encontrar rápidamente los datos. Los índices en una base de datos son análogos a los índices que usted encuentra en un libro. Si un libro tiene un índice y le pido que busque un capítulo en ese libro, puede encontrarlo rápidamente con la ayuda del índice. Por otro lado, si el libro no tiene un índice, tendrá que pasar más tiempo, buscando el capítulo, mirando cada página desde el principio hasta el final del libro. De manera similar, los índices en una base de datos pueden ayudar a las consultas a encontrar datos rápidamente. Si eres nuevo en los índices, los siguientes videos pueden ser muy útiles. De hecho, he aprendido mucho de ellos.

Index Basics
Clustered and Non-Clustered Indexes
Unique and Non-Unique Indexes
Advantages and disadvantages of indexes

+0

El primer enlace contiene un ejemplo y es excelente! – user1700890

+0

Leer todas las respuestas me hizo preguntarme ¿por qué no indexar todo. +1 para incluir el enlace que contiene las desventajas. –

11

INDEXES - para encontrar datos fácilmente

UNIQUE INDEX - valores duplicados no están permitidos

Sintaxis para INDEX

CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 

Sintaxis para UNIQUE INDEX

CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN); 
8

índice es una técnica de optimización de rendimiento que acelera el proceso de recuperación de datos. Es una estructura de datos persistente que se asocia con una tabla (o vista) para aumentar el rendimiento durante la recuperación de los datos de esa tabla (o vista).

La búsqueda basada en índice se aplica más particularmente cuando sus consultas incluyen el filtro DONDE. De lo contrario, es decir, una consulta sin WHERE-filter selecciona datos y procesos completos. La búsqueda de toda la tabla sin ÍNDICE se denomina Escaneo de tabla.

Encontrará información exacta de SQL-índices en forma clara y fiable: siga estos enlaces:

  1. Para comprender cocnept-sabia: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Overview-and-Optimizations.html
  2. Para comprender la aplicación en cuanto a: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Creation-Deletetion-Optimizations.html
72

Una muy buena analogía es pensar en un índice de base de datos como un índice en un libro. Si tiene un libro sobre países y está buscando India, ¿por qué revisará todo el libro, que es el equivalente a una exploración de tabla completa en la terminología de la base de datos, cuando puede ir al índice en la parte posterior de la libro, que le dirá las páginas exactas donde puede encontrar información sobre India. Del mismo modo, como un índice de libro contiene un número de página, un índice de base de datos contiene un puntero a la fila que contiene el valor que está buscando en su SQL.

More Here

+2

ejemplo perfecto, simple y claro –

Cuestiones relacionadas