Pregunta

En documentos para varios ORM que siempre proporciona una forma de crear índices, etc. Siempre mencionan a asegúrese de crear los índices adecuados para la eficiencia, ya que si ese es el conocimiento inherente a una escrita a mano no-SQLer que las necesidades utilizar un ORM. Mi comprensión de índices (fuera de PK) es básicamente: Si va a hacer consultas LIKE (es decir, la búsqueda) basado en el contenido de una columna, se debe utilizar un índice de texto para esa columna. ¿Qué más debo saber con respecto a los índices (en su mayoría relacionados con la eficiencia)? Siento que hay un mundo de conocimiento en mi paso de la puerta, pero hay una enorme alfombrilla de ratón plegada atascado debajo de ella, por lo que no puede conseguir a través de (no sé por qué me sentía como que tenía que decir eso, pero gracias por proporcionar el sofá).

¿Fue útil?

Solución

Piense en un índice muy aproximadamente igual que el índice en la parte posterior de un libro. Es una zona totalmente independiente del contenido del libro, en la que si usted está buscando algún valor específico, puede ir al índice y mirar hacia arriba (índices están ordenados, por lo que encontrar cosas que hay mucho más rápida que la exploración de todas las páginas del libro ).

La entrada de índice tiene un número de página, por lo que puede ir rápidamente a la página de búsqueda de su tema. Un índice de base de datos es muy similar; es una lista ordenada de la información pertinente en su base de datos (el campo (s) incluidos en el índice), con la información de la base de datos para encontrar los registros que coinciden.

Así que ... se crearía un índice cuando se tiene la información que necesita buscar en frecuencia. índices normales no le ayudan a 'parcial' busca como consultas con LIKE, pero en cualquier momento que necesitan para obtener un conjunto de resultados donde el campo X tiene cierto valor (s), mantienen el DBMS de tener que 'exploración' el conjunto de mesa , en busca de valores coincidentes.

También ayuda cuando se necesita para ordenar en una columna.

Otra cosa a tener en cuenta; Si el DBMS permite crear índices individuales que tienen varios campos, asegúrese de investigar los efectos de hacerlo, específico para su DBMS. Un índice que incluye múltiples campos es probable que sólo sea totalmente (o en absoluto) útil si todos esos campos están siendo utilizados en una consulta. A la inversa, que tiene varios índices para una sola tabla, con un campo por índice, puede no ser de mucho (o cualquier) ayuda para las consultas que son el filtrado / clasificación por varios campos.


Se menciona índices de texto completo y PK (Keys primaria). Estos son diferentes de los índices regulares, a pesar de que a menudo sirven propósitos similares.

En primer lugar, cabe destacar que una clave principal es por lo general un índice (en MSSQL, un 'índice agrupado', de hecho), pero esto no tiene por qué ser el caso en concreto. A modo de ejemplo, un MSSQL PK es un índice agrupado de forma predeterminada; índices agrupados son especiales en que no son un poco separada de los datos almacenados en otros lugares, pero los propios datos están dispuestos en la tabla en orden por el índice agrupado. Esta es la razón por una PK popular es un valor que se genera int-automático con secuencial, el aumento de los valores. Por lo tanto, un índice agrupado ordena los datos en la tabla específicamente por el valor del campo. Compare esto con un diccionario tradicional; las entradas de sí mismos están clasificadas por la 'clave', que es la palabra que se está definiendo.

Pero en MSSQL (consulte la documentación del DBMS para su información), se puede cambiar el índice agrupado a ser un campo diferente, si lo desea. A veces esto se hace en campos basados ??datetime.


índices de texto completo son los diferentes tipos de bestias por completo. Ellos utilizan algunos de los mismos principios, pero lo que están haciendo no es exactamente lo mismo que los índices normales, lo que estoy describiendo. También: en LIKE, consultas de algunos DBMS hacer no utilizar el índice de texto completo; Se requieren operadores de consulta especiales.

Estos índices son diferentes, ya que su intención no es encontrar / tipo en todo el valor de la columna (un número, una fecha, un poco corto de datos char), pero en lugar de encontrar las palabras individuales / frases dentro del campo de texto (s) siendo indexados.

Se puede también permitir a menudo la búsqueda de palabras similares, distintos tiempos verbales, faltas de ortografía comunes y similares, y por lo general ignorar las palabras irrelevantes. La diferente forma en la que trabajan es por eso que también pueden necesitar diferentes operadores puedan recurrir a ellos. (De nuevo, consulte la documentación del local para su DBMS!)

Otros consejos

Esta respuesta es Oracle-específica, pero los principales puntos de las respuestas se aplica a la mayoría de los sistemas de bases de datos relacionales

cómo elegir y optimizar el oráculo índices?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top