Featured Posts

Boas práticas e convenção de código Java Como a oracle comprou a tão conhecida Sun microsystems, e sabe lá deus se o conteudo do site pode sumir do dia pra noite, vou deixar arquivado aqui um pdf, com as boas práticas e conveção de código...

Readmore

Resetar senha do mysql 5 no windows para quem esqueceu Hoje eu estava dentro do mysql (no windows, acredito que no linux o processo tambem seja igual), e precisava trocar a senha dele por uma mais trivial. Tarefa fácil, ja fiz muitas vezes e não irei errar!...

Readmore

Resetar senha do mysql 5 no windows para quem esqueceu Hoje eu estava dentro do mysql (no windows, acredito que no linux o processo tambem seja igual), e precisava trocar a senha dele por uma mais trivial. Tarefa fácil, ja fiz muitas vezes e não irei errar!...

Readmore

Gráficos com Google Chart API Toda pessoa que se torna programador :P, um dia na vida pelo menos, vai ter a necessidade de mostrar dados em formas de gráficos! Veja agora um pouco de Google Chart API em 10 minutos. A API do Google...

Readmore

Backup e importação de dados no Mysql Se você tem acesso à maquina na qual o Mysql está instalado ou seu servidor permite conexões externas, você pode facilmente criar um backup de um banco de dados em poucos minutos. Primeiramente,...

Readmore

  • Prev
  • Next

Procedure com OPTIMIZE TABLE em todas as tabelas do mysql

Posted on : 07-08-2009 | By : Wryel | In : mysql

0

As vezes quando se tem um banco de dados com muitas tabelas, e após muitos inserts/updates você percebe que precisa de alguns OPTIMIZE TABLE tabela. Pra que perder uma hora buscando as tabelas certas ? Claro que, se você estiver em um ambiente de produção ai ja é outra história, de qualquer maneira, segue um ganha tempo:

DROP PROCEDURE IF EXISTS optimize_tables;
DELIMITER $$
CREATE PROCEDURE optimize_tables()
BEGIN
--
DECLARE $tabela VARCHAR(255);
DECLARE $contador INT DEFAULT 0;
DECLARE $linhas INT DEFAULT 0;
DECLARE $consulta CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = DATABASE();
--
OPEN $consulta;
SELECT FOUND_ROWS() INTO $linhas;
WHILE $contador < $linhas DO
	FETCH $consulta INTO $tabela;
	SET @query = CONCAT("OPTIMIZE TABLE ", $tabela);
	PREPARE query FROM @query;
	EXECUTE query;
	SET $contador = $contador + 1;
END WHILE;
CLOSE $consulta;
DEALLOCATE PREPARE query;
--
END$$
DELIMITER ; $$

Se você não souber o que fazer com o código acima, va no client do mysql e faça:

mysql -h ipDoMysql -u seuUsuario -p bancoDeDados|Se não tiver deixe um espaço em branco

digite sua senha, copie e cole o primeiro código e depois para executar:

CALL optimize_tables;

Write a comment

Security Code: