-- 创建添加索引的存储过程
-- t 表名;i 索引名称;v 创建索引执行的sql ddl语句
DROP PROCEDURE IF EXISTS add_index;
DELIMITER $
CREATE PROCEDURE add_index(IN t VARCHAR(100),IN i VARCHAR(100),IN v VARCHAR(255))
BEGIN
DECLARE target_database VARCHAR(100);
DECLARE target_table_name VARCHAR(100);
DECLARE target_column_name VARCHAR(100);
DECLARE target_index_name VARCHAR(100);
set target_table_name = t;
set target_index_name = i;
SELECT DATABASE() INTO target_database;
IF NOT EXISTS (SELECT * FROM information_schema.statistics WHERE table_schema = target_database AND table_name = target_table_name AND index_name = target_index_name) THEN
set @statement = v;
PREPARE STMT FROM @statement;
EXECUTE STMT;
END IF;
END;
$
DELIMITER ;
-- 创建删除索引的存储过程
DROP PROCEDURE IF EXISTS del_index;
DELIMITER $
CREATE PROCEDURE del_index(IN t VARCHAR(100),IN i VARCHAR(100),IN v VARCHAR(255))
BEGIN
DECLARE target_database VARCHAR(100);
DECLARE target_table_name VARCHAR(100);
DECLARE target_column_name VARCHAR(100);
DECLARE target_index_name VARCHAR(100);
set target_table_name = t;
set target_index_name = i;
SELECT DATABASE() INTO target_database;
IF EXISTS (SELECT * FROM information_schema.statistics WHERE table_schema = target_database AND table_name = target_table_name AND index_name = target_index_name) THEN
set @statement = v;
PREPARE STMT FROM @statement;
EXECUTE STMT;
END IF;
END;
$
DELIMITER ;