2010-07-21 20 views
14

No entiendo qué es o qué es un índice en SQLite. (NO SQL) Creo que permite ordenar en orden de entrada y salida y acceder a datos más rápido. Pero solo estoy adivinando aquí.¿Qué es un índice en SQLite?

+0

Existe un excelente tutorial de SQLite con dibujos que explican [cómo los diferentes tipos de índices acelerarán las consultas] (https://www.sqlite.org/queryplanner.html). –

Respuesta

15

¿Por qué no SQL? La respuesta es la misma, aunque los detalles internos diferirán entre implementaciones.

Poner un índice en una columna le dice al motor de base de datos que cree, como era de esperar, un índice que le permita localizar filas rápidamente cuando busca ciertos valores en una columna, sin tener que escanear todas las filas de la tabla.

Un índice simple (y probablemente subóptimo) podría construirse con un árbol de búsqueda binario ordinario.

3

un índice (en cualquier base de datos) es una lista de algún tipo que asocia una lista ordenada (o al menos, de forma rápida búsqueda) de llaves con información acerca dónde encontrar el resto de los datos asociados con la clave.

Es posible que no encuentre información al respecto en Internet porque supone que se trata de un concepto de SQLite, pero no lo es, es un concepto general de ingeniería informática.

3

Piensa en una libreta de direcciones. Si está buscando el número de teléfono de Rossi Mario, sabe que los apellidos están ordenados alfabéticamente para que pueda ir a la letra R, luego busque la letra o y así sucesivamente. Index haz lo mismo, son colecciones de referencias a entradas que aceleran mucho algunas operaciones.

Buscar en una libreta de direcciones no ordenadas sería mucho más lento, debe comenzar desde el primer nombre en la primera página y buscar en todas las páginas hasta que encuentre el nombre que está buscando.

2

creo que permite la clasificación en acending y el orden y acceso a los datos más rápidos decending.

Sí, de eso se trata. Los índices crean la abstracción de tener datos ordenados, lo que acelera las búsquedas de manera significativa. Con un índice que utiliza un árbol de búsqueda binaria equilibrado, las búsquedas toman O (log N) en lugar de O (N) time.

Qué otras respuestas no han mencionado que la mayoría de las bases de datos usan índices para implementar UNIQUE (y por lo tanto también PRIMARY KEY) restricciones. Porque para garantizar la exclusividad, debe poder detectar si la clave ya está allí y esto significa que desea realizar búsquedas rápidas.

Eche un vistazo a su base de datos SQLite. Esos índices sqlite_autoindex_ se crearon para imponer restricciones ÚNICAS.

Cuestiones relacionadas