2010-01-05 8 views
7

chicos Hai,
¿Cuándo debería crear índices de base de datos?

  • cuándo conjunto de índices para una tabla (es decir) durante la creación de la tabla o en la optimización del rendimiento?

  • ¿Cuáles son las ventajas y desventajas de la indexación?

+0

duplicado: http://stackoverflow.com/questions/107132/what-columns-generally-make-good-indexes –

+0

también: http://stackoverflow.com/questions/523018/when-should-you -consider-indexing-your-sql-tables –

+0

Debe leer: http://www.sqlskills.com/BLOGS/KIMBERLY/category/The-Tipping-Point.aspx –

Respuesta

9

muchos (la mayoría?) Los índices de uso de DBMS para apoyar único restricciones Siempre crea índices para imponer restricciones únicas; ellos (las restricciones) son cruciales para el correcto funcionamiento de su base de datos.

Donde tiene la opción de cómo crear el índice en varias columnas, coloque la columna a la que siempre se hará referencia en las consultas antes que en otros campos, generalmente. Esto es mejor si la columna principal también es algo selectiva.

Después de que tenga las restricciones necesarias para la unicidad, tenga en cuenta las necesarias para imponer la integridad referencial. Por lo general, también los manda el DBMS.De nuevo, no puede permitirse tener su base de datos en un estado de desintegridad; es un sistema lógico, y si contiene falacias, puede probar cualquier cosa que no sea útil.

Después de que las restricciones de unicidad e integridad referencial sean tratadas (indexadas), entonces usted puede beneficiarse o no de algunas otras. Elija cuidadosamente y agregue el menor número de extras posible (cero es un buen número). Cada índice ralentiza las operaciones de actualización (ACTUALIZAR, INSERTAR, ELIMINAR) y usa espacio de almacenamiento. La intención es que gane su lugar acelerando las consultas. Sin embargo, no olvide que el optimizador tiene que pensar en cada índice y si puede ser útil para responder la consulta, por lo que los índices también disminuyen la velocidad del optimizador (aunque es probable que sea difícil medir ese efecto).

Cuando agregue índices, agréguelos a columnas selectivas (no a 'sexo' que contenga 'M' y 'F', pero tal vez 'dob' contenga fechas de nacimiento entre 1900 y 2010, o incluso valores más distintos que Considere si las columnas adicionales ayudarán a responder más consultas. Algunos DBMS (como DB2) proporcionan índices con columnas adicionales que no forman parte de la restricción de exclusividad pero que proporcionan columnas que se utilizan con frecuencia en la consulta. Estas pueden permitir un índice exploración -sólo (uno que no necesita acceder a los datos de la tabla debido a que los valores necesarios están todos en el índice).

hay mucho más que se puede decir, pero esto cubre una gran parte del territorio.

  • Tan pocos índices como sea necesario, y preferiblemente sin extras.
1

En general, configura los índices durante la creación de la tabla. En esta fase, ya debe tener una buena indicación de cómo se consultarán sus datos y qué campos se usarán más como criterios de consulta.

Durante la optimización del rendimiento, generalmente se recomienda tener los índices obvios en su lugar. Durante esta fase, podrá comprender si hay índices que no se utilizan de manera eficiente o si hay consultas en las que un índice puede aumentar el rendimiento. No hay nada que lo detenga para eliminar o agregar nuevos índices durante la optimización del rendimiento.

5

Hay un equilibrio que debe alcanzarse. Si SABES que se consultará una tabla y FieldA formará parte de la cláusula where y es un campo que es altamente seleccionable (cardinalidad de google), entonces es un buen candidato para el ajuste preventivo.

NO arrojar índices en todo tipo de campos porque PIENSA que tiene sentido, uno debe CONOCER estas cosas. Los ajustes/optimizaciones prematuras son la raíz de todos los males que un hombre sabio dijo una vez. En este caso, los índices pueden dañar el rendimiento de inserción/actualización porque no solo es necesario actualizar los datos de la tabla, sino también el índice.

Nota al margen: para algunas cargas de datos de gran tamaño, las personas suelen soltar índices, cargar y luego volver a crear los índices para que la carga funcione más rápidamente.

En cuanto a las ventajas y desventajas, es un gran tema. Te sugiero que comiences aquí.

http://odetocode.com/articles/70.aspx

1

me gustaría añadir los índices 'obvias', es decir, en los campos que saben que te pueden consultar en la mesa de crear tiempo, y luego añadir otros según sea necesario, como parte de una melodía. Probablemente sea mejor tener un menor número de índices al principio y luego tener una idea de cómo funciona y se está utilizando el sistema: el perfil es el que escucha tu amigo.

Ventajas - acceso más rápido (cuando se usa el índice) y la capacidad de aplicar cierta lógica empresarial como no duplicados.

Desventajas - tabla ocupa más espacio, la inserción de filas es más lenta (puede ser mucho más lento), cambios que tocan el campo clave (s) son más lentas

+0

@MrTelly ¿Puede decir cuáles son los índices "obvios" ? –

+0

Como dije, los campos que usted conoce serán consultados también cualquier campo de clave externa. – MrTelly

Cuestiones relacionadas