¿Necesita crear explícitamente un índice o está implícito al definir la clave primaria? ¿La respuesta es la misma para MyISAM e InnoDB?
243
La clave primaria siempre está indexada. Esto es lo mismo para MyISAM e InnoDB, y generalmente es cierto para todos los motores de almacenamiento que admiten todos los índices.
De acuerdo con http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html , parecería que esto sería implícito
fuente
Aunque esto se preguntó en 2009, pensé que publicaría una referencia real a la documentación de MySQL en las claves principales. http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html
Para obtener una referencia de MySQL 5.0, consulte: http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
fuente
La clave primaria está indexada implícitamente tanto para MyISAM como para InnoDB. Puede verificar esto utilizando EXPLAIN en una consulta que utiliza la clave primaria.
fuente
No tiene que crear explícitamente un índice para una clave primaria ... se hace de manera predeterminada.
fuente
Supongo que esta es la respuesta.
fuente
Los índices se usan mejor en columnas que se usan con frecuencia en las cláusulas where, y en cualquier tipo de clasificación, como "ordenar por". Es posible que esté trabajando en una base de datos más compleja, por lo que es bueno recordar algunas reglas simples.
Los índices se aceleran donde las cláusulas y se ordenan. Recuerde pensar en CÓMO se usarán sus datos al construir sus tablas. Hay algunas otras cosas para recordar. Si su tabla es muy pequeña, es decir, solo unos pocos empleados, es peor usar un índice que dejarlo fuera y dejarlo escanear una tabla.
Los índices realmente solo son útiles con tablas que tienen muchas filas.
Otra cosa para recordar, que es una estafa en la situación de la base de datos de nuestros empleados, es que si la columna tiene una longitud variable, los índices (así como la mayoría de MySQL) funcionan de manera mucho menos eficiente.
¡No olvides unirse también! Los campos de unión indexados aceleran las cosas.
fuente
La clave primaria siempre se indexa automáticamente y es única. Por lo tanto, tenga cuidado de no crear índices redundantes.
Por ejemplo, si creó una tabla como tal
como desea indexar la clave principal y aplicar una restricción de unicidad, ¡en realidad terminaría creando tres índices
foo
!fuente
Uno puede pensar en una columna de clave primaria como cualquier otra columna indexada con las restricciones de la clave primaria que trae consigo.
En la mayoría de los casos de uso, necesitamos tanto la clave primaria como la columna / columnas indexadas en una tabla, porque nuestras consultas a la tabla pueden filtrar filas en función de la columna / columnas que no es la clave principal, en ese caso generalmente indexamos esas columnas / columnas también.
fuente