ver usar unico una tamaño tabla reorganizar optimizar indice index funciona español como mysql

usar - Cómo averiguar el tamaño de los índices en MySQL



usar indices mysql (8)

Aquí hay una adaptación de algunos de los anteriores para también darle el porcentaje del índice total de la tabla que cada índice ha usado, con suerte esto será útil para alguien

select database_name, table_name, index_name, round((stat_value*@@innodb_page_size)/1024/1024, 2) SizeMB, round(((100/(SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES t WHERE t.TABLE_NAME = iis.table_name and t.TABLE_SCHEMA = iis.database_name))*(stat_value*@@innodb_page_size)), 2) `Percentage` from mysql.innodb_index_stats iis where stat_name=''size'' and table_name = ''TargetTable'' and database_name = ''targetDB''

Ejemplo de salida

database_name table_name index_name SizeMB Percentage targetDB TargetTable id 10 55.55 targetDB TargetTable idLookup 5 27.77 targetDB TargetTable idTest 3 16.66

Saludos, Liam

Quiero determinar el tamaño de mis índices, son índices de clave primaria. Esto sucede que está en el clúster mysql, pero no creo que eso sea significativo.



En MyISAM , cada bloque de índice tiene 4 KB página de 4 KB completada para fill_factor con registros de índice, cada uno con key length + 4 bytes de longitud.

Fill factor es normalmente 2/3

En cuanto a InnoDB , la tabla siempre está agrupada en la PRIMARY KEY , no hay un índice PRIMARY KEY separado



Extendiendo la respuesta de Vajk Hermecz.
Así es como puede obtener todos los tamaños de índice, en megabytes, sin el PRIMARIO (que es la tabla en sí), ordenado por tamaño.

SELECT database_name, table_name, index_name, round(stat_value*@@innodb_page_size/1024/1024, 2) size_in_mb FROM mysql.innodb_index_stats WHERE stat_name = ''size'' AND index_name != ''PRIMARY'' ORDER BY 4 DESC;



Si está utilizando tablas InnoDB, puede obtener el tamaño para índices individuales de mysql.innodb_index_stats . La estadística de ''tamaño'' contiene la respuesta, en páginas, por lo que debe multiplicarla por el tamaño de página, que es 16K por defecto .

select database_name, table_name, index_name, stat_value*@@innodb_page_size from mysql.innodb_index_stats where stat_name=''size'';


Usando phpMyAdmin, al ver la estructura de la tabla hay un enlace de Detalles en la parte inferior en alguna parte. Una vez que haga clic en él, le mostrará el tamaño total de los índices que tiene en la tabla donde está marcado como Uso del espacio.

Sin embargo, no creo que te muestre cada índice individualmente.