Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/07/2009, 06:25
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
Respuesta: Diferencia entre index y primary key

Como se usan los índices.... no he puesto nada al respecto completo la respuesta.


En principio el motor de bbdd y su optimizador de consultas usará los índices que crea mas convenientes en función de la consulta y de los índices que tenga creados, por tanto que no se indique nada no implica que no se usen los índices. Sin embargo en las ocasiones en que no se obtiene un buen rendimiento existe la posibilidad de "ayudar" al optimizador indicando que índices usar, se estará forzando el uso del índice aquí tenéis el link al manual al respecto 12.2.8.2. Index Hint Syntax.

Todos los motores tienen en mayor o menor grado instrucciones para pedir que el motor te muestre como ha ejecutado una consulta, en mysql es 12.3.2. EXPLAIN Syntax con esta instrucción se puede ver que índices ha usado, al menos en ORACLE (alli se llama EXPLAIN PLAN). Analizando la información que da este tipo de instrucciones se puede modificar las sentencia de query llegando a obtener mejoras de rendimiento sorprendentes. En el caso de MySql la información es bastante pobre.

La optimización de la elección de que índices crear depende mucho de el tipo de consultas a realizar y de la dispersión de los datos.

Tipo de consultas, ejemplo si se va a consultar los datos por fechas pues será muy conveniente tener creado un índice, que no podrá ser único, sobre el campo donde se guarda la fecha....

Un campo bolean (verdadero/falso) como mucho va a dividir los datos en dos grupos, el conocimiento de los datos nos debe decir si será de utilidad crear un índice sobre un campo de este tipo...
imaginemos que el 90% los registros son verdaderos y que solo vamos a hacer consultas sobre los falsos, en este caso el índice podría ayudar ya que limitara la búsqueda en un 10% de los registros, en cambio si vamos a consultar sobre los verdaderos no servirá de nada puesto que solo discrimina un 10% de registros.

Siguiendo con la teoría la elección del tipo de índice, tabla hash o btree..., también dependerá de la dispersión de los datos, de numero de repeticiones de los valores etc donde un tipo de índice será más eficiente que otro por su estructura interna.... la teoría es larga y a mi entender apasionante.

Uffff que rollo he soltado!!!!


Quim

Última edición por quimfv; 21/07/2009 a las 06:31