有没有一种方法可以仅在不存在索引的数据库中运行ADD INDEX?类似于根据SHOW INDEX ON的结果执行ADD INDEX。我们真的想避免在已经存在索引的情况下意外地添加额外的索引开销。
我猜你正在寻找类似于这样的内容:
CREATE INDEX IF NOT EXISTS index_name ON table(column)
很遗憾,mySql中没有这个功能。您可以使用存储过程(如Gordon Linoff所提到的)来检查索引是否存在,如果不存在则添加索引。
关于索引的信息可以在INFORMATION_SCHEMA
中找到。
您可以执行以下查询来检查现有的索引:
SELECT COUNT(1) indexExists FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema=DATABASE() AND table_name='mytable' AND index_name='index_name';