ori*_*igo 18
也许你的意思是"我如何在我的(现有)实时数据库上重新创建我的开发索引"?
如果是这样,我认为你正在寻找的SQL命令是;
SHOW CREATE TABLE {tablename};
ALTER TABLE ADD INDEX {index_name}(col1,col2)
ALTER TABLE DROP INDEX {index_name}
您可以从"SHOW CREATE TABLE"输出中复制"KEY"和"CONSTRAINT"行,并将其放回"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;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
扩展@origo的回答。有一种情况我需要为一堆索引提取 DDL。这个脚本完成了这项工作。
来源:https : //rogerpadilla.wordpress.com/2008/12/02/mysql-export-indexes/
SELECT
CONCAT(
'ALTER TABLE ' ,
TABLE_NAME,
' ',
'ADD ',
IF(NON_UNIQUE = 1,
CASE UPPER(INDEX_TYPE)
WHEN 'FULLTEXT' THEN 'FULLTEXT INDEX'
WHEN 'SPATIAL' THEN 'SPATIAL INDEX'
ELSE CONCAT('INDEX ',
INDEX_NAME,
' USING ',
INDEX_TYPE
)
END,
IF(UPPER(INDEX_NAME) = 'PRIMARY',
CONCAT('PRIMARY KEY USING ',
INDEX_TYPE
),
CONCAT('UNIQUE INDEX ',
INDEX_NAME,
' USING ',
INDEX_TYPE
)
)
),
'(',
GROUP_CONCAT(
DISTINCT
CONCAT('', COLUMN_NAME, '')
ORDER BY SEQ_IN_INDEX ASC
SEPARATOR ', '
),
');'
) AS 'Show_Add_Indexes'
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'PLEASE CHANGE HERE'
GROUP BY TABLE_NAME, INDEX_NAME
ORDER BY TABLE_NAME ASC, INDEX_NAME ASC;
Run Code Online (Sandbox Code Playgroud)
首先,阅读此处的教程,了解如何使用 SQL 查询导出 MySQL 索引。更远:
如果您完成了数据库的转储并将其导入到另一个(使用 PHPMyAdmin 等),索引将重新生成。
如果可能,您可以将整个 MySQL 数据库文件夹的内容复制到生产数据库。这也能很快解决问题。在 MySQL 文档中阅读更多信息。
归档时间: |
|
查看次数: |
18914 次 |
最近记录: |