MySql, how can I export indexes from my development database to my production database?

前端 未结 6 755
南方客
南方客 2020-12-11 00:59

I\'ve been working on my development database and have tweaked its performance.

However, to my surprise I can\'t find a way to export the indexes to my production da

6条回答
  •  生来不讨喜
    2020-12-11 01:36

    Perhaps you mean "How do I re-create my development indexes on my (existing) live database"?

    If so, I think the SQL commands you're looking for are;

    SHOW CREATE TABLE {tablename};

    ALTER TABLE ADD INDEX {index_name} (col1, col2)

    ALTER TABLE DROP INDEX {index_name}

    You can copy the "KEY" and "CONSTRAINT" rows from "SHOW CREATE TABLE" output and put it back in the "ALTER TABLE ADD INDEX".

    dev mysql> SHOW CREATE TABLE city;
    CREATE TABLE `city` (
      `id` smallint(4) unsigned NOT NULL auto_increment,
      `city` varchar(50) character set utf8 collate utf8_bin NOT NULL default '',
      `region_id` smallint(4) unsigned NOT NULL default '0',
      PRIMARY KEY  (`id`),
      KEY `region_idx` (region_id),
      CONSTRAINT `city_ibfk_1` FOREIGN KEY (`region_id`) REFERENCES `region` (`id`) ON UPDATE CASCADE ON DELETE RESTRICT
    ) ENGINE=InnoDB;
    
    live mysql> SHOW CREATE TABLE city;
    CREATE TABLE `city` (
      `id` smallint(4) unsigned NOT NULL auto_increment,
      `city` varchar(50) character set utf8 collate utf8_bin NOT NULL default '',
      `region_id` smallint(4) unsigned NOT NULL default '0',
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB;
    
    live mysql> ALTER TABLE `city` ADD KEY `region_idx` (region_id);
    live mysql> ALTER TABLE `city` ADD CONSTRAINT `city_ibfk_1` FOREIGN KEY (`region_id`) REFERENCES `region` (`id`) ON UPDATE CASCADE ON DELETE RESTRICT;
    

    Hope this helps!

提交回复
热议问题