Desarrollo avanzado en Mysql

Hoy inicio un post para agrupar utilidades y trucos interensantes que me han servido alguna vez en Mysql.
Empezamos con la implementación de un ucfirst. Devuelve una cadena con el primer caracter str en máyusculas, si el caracter es alfabético.

SELECT CONCAT(UCASE(MID(titulo,1,1)),MID(titulo,2)) AS titulo
from
tbl_titulos_fotos where fk_id_tbl_idiomas = 'es';


Query para sacar los nombres de campos y tablas en mysql, a partir de aquí con un like ya podríamos encontrar el campo que se nos ha perdido
SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS



Ojo a esta función de mysql para agrupar campos separados por un separador definido por ti por ejemplo una coma

haces un group by normal pero con group_concat lo presentas separado por comas en una columna, buenisimo!

http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat


y si quieres ver que querys están ejecutandose en tu base de datos, la crema de las sentencias

SHOW FULL PROCESSLIST;

desde la consola SHOW FULL PROCESSLIST\g; Consultas contra el information-schema de MySQL para obtener: Cantidad de tablas, filas, tamaño de archivos de datos e índices y relación de tamaño indice/datos Listado de las tablas más grandes Distribución de datos por motor de almacenamiento # Tamaño de una tabla en Base de datos SELECT table_name ,concat(round(sum(table_rows)/1000000,2),'M') rows ,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA ,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx ,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size ,round(sum(index_length)/sum(data_length),2) idxfrac FROM information_schema.TABLES GROUP BY table_name ORDER BY sum(data_length+index_length) DESC;
#Tamaño de la base de datos

SELECT
count(*) TABLES
,concat(round(sum(table_rows)/1000000,2),'K') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES;
-- Si deseamos filtrar por tabla aplicamos una condición
-- WHERE
-- WHERE table_name LIKE "%tabla_buscada%";

#Tamaño de Esquemas

SELECT
count(*) TABLES
,table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
GROUP BY
table_schema
ORDER BY
sum(data_length+index_length) DESC LIMIT 10;

# Tamaño por motor

SELECT
engine
,count(*) TABLES
,concat(round(sum(table_rows)/1000000,2),'M') rows
,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA
,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx
,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size
,round(sum(index_length)/sum(data_length),2) idxfrac
FROM
information_schema.TABLES
GROUP BY
engine
ORDER BY
sum(data_length+index_length) DESC LIMIT 10;
Las he encontrado en este post http://luauf.com/2008/05/14/tamano-de-tablas-en-mysql/
Unos consejos muy interesantes para Optimizar la base de datos http://boozox.net/mysql/20-consejos-para-mejorar-tu-mysql-que-quizas-no-conocias/

Comentarios