如何利用“如果存在”在MySQL中创建或删除索引?

2022-08-30 09:16:45

我想知道是否有一种方法可以在MySQL上创建索引或销毁索引之前检查索引是否存在。几年前似乎有一个功能请求,但我找不到任何解决方案的文档。这需要在使用MDB2的PHP应用程序中完成。


答案 1

这是我的4衬里:

set @exist := (select count(*) from information_schema.statistics where table_name = 'table' and index_name = 'index' and table_schema = database());
set @sqlstmt := if( @exist > 0, 'select ''INFO: Index already exists.''', 'create index i_index on tablename ( columnname )');
PREPARE stmt FROM @sqlstmt;
EXECUTE stmt;

答案 2

IF EXISTS修改器尚未为 或 尚未构建。但是,您可以在创建/删除索引之前手动检查是否存在。DROP INDEXCREATE INDEX

使用此句子可以检查索引是否已存在。

SHOW INDEX FROM table_name WHERE KEY_NAME = 'index_name'
  • 如果查询返回零 (0),则索引不存在,则可以创建它。
  • 如果查询返回正数,则索引存在,则可以将其删除。

推荐