Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql, wie kann ich Indizes aus meiner Entwicklungsdatenbank in meine Produktionsdatenbank exportieren?

Vielleicht meinen Sie "Wie erstelle ich meine Entwicklungsindizes auf meiner (bestehenden) Live-Datenbank neu"?

Wenn ja, denke ich, dass die SQL-Befehle, nach denen Sie suchen,

sind

SHOW CREATE TABLE {Tabellenname};

ALTER TABLE ADD INDEX {Indexname} (Spalte1, Spalte2)

ALTER TABLE DROP INDEX {Indexname}

Sie können die „KEY“- und „CONSTRAINT“-Zeilen aus der „SHOW CREATE TABLE“-Ausgabe kopieren und sie wieder in „ALTER TABLE ADD INDEX“ einfügen.

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;

Hoffe, das hilft!