Featured Posts

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

Extensão oci8 1.3.5 (Oracle database) para PHP 5 A versão 1.3.5 da extensão OCI8, responsável por fazer conxão do php com o banco de dados da Oracle, foi lançada recentemente. Em relação a ultima versão (1.3.4), foram corrigidos apenas bugs....

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: