2011-06-12 12 views
5

Sé que la clave principal en InnoDB está agrupada. De modo que usar un entero de incremento automático como la clave primaria tiene la ventaja de que ya se ha ordenado y mejora el rendimiento de la inserción.Cómo InnoDB ordena las claves primarias de varias columnas

Pero el problema es que tengo una tabla como esta con 2 columnas id y hash (y alguna otra pero no importante);

id int auto increment 
hash Guid 

Necesito dividir esta tabla en la columna hash, eso significa que debo ponerla en la clave principal.

Así que estoy pensando en crear una clave principal como (id, hash). La columna id se utilizará en las uniones con las otras tablas.

El problema es si tengo el PK como (id, hash) ¿cómo lo ordenará InnoDB?

¿Utilizará la columna de identificación primero y luego hash o usará alguna otra forma para determinar el orden de la clave? El primero será mejor ya que se beneficia de la columna de autoinc ya ordenada, pero no pude encontrar ninguna información sobre cómo se hará la clasificación en las columnas compuestas.

Cualquier penetración en este se aprecia grandemente :)

+1

Se ordenará por id, hash. –

+0

Creo que sería lo mismo que DDL porque el orden es cuestión. Normalmente, los sistemas de base de datos no pueden designar el pedido para usted. Y el orden de la clave principal es un factor de ajuste del rendimiento. –

Respuesta

1

una clave principal en múltiples columnas es administrado por MySQL como una concatenación de los valores de las columnas seleccionadas. Por lo tanto, la primera columna se puede ordenar más rápido, ya que estará al comienzo del agregado.

Cuestiones relacionadas