sql >> データベース >  >> RDS >> Mysql

MySqlでSQL選択の結果を実行します

    プリペアドステートメント を使用する必要があります 。

    SET @s:='';
    SELECT @s:=concat(@s, 'OPTIMIZE TABLE `', ist.TABLE_SCHEMA,'`.',  ist.TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES ist where table_schema = 'my_schema';    
    PREPARE stmt FROM @s;
    EXECUTE stmt;
    
    DEALLOCATE PREPARE stmt;
    

    ただし、すべての最適化テーブルステートメントを1つの変数に入れる必要があるため、@sを連結しています。 それ自体で。それ以外の場合は、カーソルを操作する必要がありますが、これは不要な作業です。

    ANALYZE TABLE
    OPTIMIZE TABLE
    REPAIR TABLE
    

    編集:さらに簡単なアプローチはこれです:

    SELECT CONCAT('OPTIMIZE TABLE `', ist.TABLE_SCHEMA,'`.',  ist.TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES ist WHERE table_schema = 'my_schema'
    INTO OUTFILE '/tmp/my_optimization';
    SOURCE 'tmp/my_optimization';
    


    1. PhalconPHPデータベーストランザクションがサーバーで失敗する

    2. WHEREin句に関するMysqlの問題

    3. CakePHP3-それ自体とのDBテーブルの関連付け

    4. 406行目のMySQLエラー2006(HY000):MySQLサーバーがなくなりました