Σάββατο, 18 Μαΐου, 2024
More
    ΑρχικήSQLΜετατροπή όλων των πινάκων σε InnoDB από MyISAM

    Μετατροπή όλων των πινάκων σε InnoDB από MyISAM

    Το InnoDB είναι πιο γρήγορο για το wordpress. Εκτός αυτού είναι λιγότερο πιθανό να κρασάρουν πίνακες.

    SET @DATABASE_NAME = 'name_of_your_db';
    
    SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements
    FROM    information_schema.tables AS tb
    WHERE   table_schema = @DATABASE_NAME
    AND     `ENGINE` = 'MyISAM'
    AND     `TABLE_TYPE` = 'BASE TABLE'
    ORDER BY table_name DESC;

    Για stored procedure:

    DROP PROCEDURE IF EXISTS convertToInnodb;
    DELIMITER //
    CREATE PROCEDURE convertToInnodb()
    BEGIN
    mainloop: LOOP
      SELECT TABLE_NAME INTO @convertTable FROM information_schema.TABLES
      WHERE `TABLE_SCHEMA` LIKE DATABASE()
      AND `ENGINE` LIKE 'MyISAM' ORDER BY TABLE_NAME LIMIT 1;
      IF @convertTable IS NULL THEN 
        LEAVE mainloop;
      END IF;
      SET @sqltext := CONCAT('ALTER TABLE `', DATABASE(), '`.`', @convertTable, '` ENGINE = INNODB');
      PREPARE convertTables FROM @sqltext;
      EXECUTE convertTables;
      DEALLOCATE PREPARE convertTables;
      SET @convertTable = NULL;
    END LOOP mainloop;
    
    END//
    DELIMITER ;
    
    CALL convertToInnodb();
    DROP PROCEDURE IF EXISTS convertToInnodb;
    Θεόδωρος Τασσόπουλος
    Θεόδωρος Τασσόπουλοςhttps://www.digispot.gr
    Τεχνολόγος Ηλεκτρονικός Μηχανικός MSc in Networking & Data Communications. MSc in Banking, Accounting and Finance. Ασχολούμαι με τον προγραμματισμό από τις αρχές του 2000. Τα τελευταία πέντε έτη ασχολούμαι με την Διοικητική Πληροφόρηση και το Business Intelligence γενικότερα. Ξεκινάω συνεχώς νέα project χωρίς να υπάρχει απαραίτητα η προοπτική του κέρδους. Λάτρης των θετικών επιστημών και θαυμαστής αυτών που τις αντιλαμβάνονται.
    RELATED ARTICLES