USE xxx_db;

/* 一、

* 安全创建索引的存储过程:

* 首先判断索引是否存在,如果已经存在则不创建,如果不存在,则创建。

* 防止索引已经存在,创建出错和删除索引重复创建原来的索引带来的开销浪费

*

* 参数说明:

* p_dbname : 数据库名称

* p_tablename : 表名称

* p_idxname : 索引名称

* p_index : 索引名称和结构,比如在 name(name)

*

* 举例:比如想要在数据库xxx_db的tablename这张表的字段column1和column2创建联合索引idx_c1c2,则如下:

* call add_index('xxx_db','tablename','idx_c1c2','idx_c1c2(column1,column2)')

*/

DROP PROCEDURE

IF EXISTS add_Index;

delimiter //

CREATE PROCEDURE add_Index (

IN p_dbname VARCHAR (200),

IN p_tablename VARCHAR (200),

IN p_idxname VARCHAR (200),

IN p_index VARCHAR (200)

)

BEGIN

DECLARE

str VARCHAR (250);

SET @str = concat(

' ALTER TABLE ',

p_tablename,

' ADD INDEX ',

p_index

);

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 @str;

EXECUTE stmt;

END

IF;

END;

//

delimiter ;

/* 为my_db的mytable表创建组合索引mytable_idxc1c2(c1,c2)优化查询速度

*

* */

CALL add_Index (

'my_db',

'mytable',

'mytable_idexc1c2',

'mytable_idexc1c2(c1,c2)'

);

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐