sql >> Base de Datos >  >> RDS >> Mysql

índices primarios Vs índices secundarios:diferencias de rendimiento

Una tabla agrupada es un B-Tree sin una porción de "montón":las filas se almacenan directamente en la estructura B-Tree del índice de agrupación (clave principal). Los nodos del B-Tree se pueden dividir o fusionar, por lo que la ubicación física o las filas pueden cambiar, por lo que no podemos tener un "puntero" simple desde un índice secundario a las filas, por lo que el índice secundario debe incluir una copia completa de los campos de índice principal para poder identificar filas de manera confiable.

Esto es cierto para Oracle, MS SQL Server y también es cierto para InnoDB .

Lo que significa que los índices secundarios en las tablas agrupadas son "más gruesos" que los índices secundarios en las tablas basadas en montones, que:

Déjame citar ¡Usa el índice, Luke! :"Las ventajas de las tablas organizadas por índices y los índices agrupados se limitan principalmente a las tablas que no necesitan un segundo índice".

Lo cual es una pena, ya que MySQL no le permite elegir el agrupamiento independientemente del motor de almacenamiento.