mysql默认索引add index_mysql sp_add_Index 先判断有没有索引 没有就添加

DELIMITER $$ CREATE  PROCEDURE `sp_add_Index`(     IN p_tablename VARCHAR (100),       IN p_indexType VARCHAR(100),     IN p_indexcolumnList VARCHAR (200),     IN p_idxname VARCHAR(70) ) BEGIN       DECLARE p_dbname VARCHAR(50);     SET @p_dbname = DATABASE();     SET @p_idxname = p_idxname; -- 索引名不能超过64字节          CASE p_indexType      WHEN 'primary' THEN     SET @p_idxname = 'primary';     SET @add_index = CONCAT('ALTER TABLE ', p_tablename, ' ADD ', 'primary key(', p_indexcolumnList ,');');     WHEN 'unique' THEN     IF LENGTH(@p_idxname) = 0 THEN SET @p_idxname = CONCAT('uni_idx_',p_tablename,'_',REPLACE(p_indexcolumnList,',','_')); END IF;       SET @add_index = CONCAT('ALTER TABLE ', p_tablename, ' ADD ', p_indexType,' ',@p_idxname ,'(', p_indexcolumnList ,');');     ELSE     IF LENGTH(@p_idxname) = 0 THEN SET @p_idxname = CONCAT('IDX_',p_tablename,'_',REPLACE(p_indexcolumnList,',','_')); END IF;       SET @add_index = CONCAT('ALTER TABLE ', p_tablename, ' ADD ', p_indexType,' ',@p_idxname ,'(', p_indexcolumnList ,');');      END CASE;     SELECT   COUNT(*) INTO @cnt       FROM   information_schema.statistics       WHERE   TABLE_SCHEMA = @p_dbname   AND table_name = p_tablename   AND index_name = @p_idxname;   IF @cnt = 0 THEN   PREPARE stmt FROM @add_index;   EXECUTE stmt;  END IF; END$$ DELIMITER ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值