Mysql - Consulta para obtener las tablas que tengan particiones

Breve introducción

La mayoría de motores de bases de datos permiten particionar las tablas.

La partición no es más que un tipo de subtabla que permite trocear un conjunto de datos a partir de una condición. Esta condición suele ser un campo fecha.

Caso de uso

Supongamos que tenemos una tabla donde acumulamos todas las peticiones http hacia nuestra web. La página tiene tanto tráfico que al día se pueden guardar cien mil registros, eso significa que dentro de poco tiempo se pasará a millones y la típica consulta por día podría verse afectada en rendimiento.

La estrategia a seguir sería particionar dicha tabla por fecha, por día (por ejemplo), así pues la consulta cuando se haga por fecha no tendrá que hacer un full scan por todas las subtablas mejorando el tiempo de respuesta.

Una forma de descubrir que tablas tienen particiones y como están configuradas en mysql/mariadb usando una consulta es la siguiente

SELECT DISTINCT TABLE_NAME FROM information_schema.partitions WHERE 1 AND TABLE_SCHEMA=DATABASE() -- AND TABLE_NAME = 'tu tabla' AND PARTITION_NAME IS NOT NULL ORDER BY 1

Autor: Eduardo A. F.
Publicado: 26-12-2020 21:43