MySQL存储过程----创建索引前,先判断索引是否已经存在,如果存在,则不添加,如果不存在,添加
2014-04-14 18:40
1741 查看
/* 一、
* 安全创建索引的存储过程:
* 首先判断索引是否存在,如果已经存在则不创建,如果不存在,则创建。
* 防止索引已经存在,创建出错和删除索引重复创建原来的索引带来的开销浪费
*
* 参数说明:
* 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)')
*/
* 安全创建索引的存储过程:
* 首先判断索引是否存在,如果已经存在则不创建,如果不存在,则创建。
* 防止索引已经存在,创建出错和删除索引重复创建原来的索引带来的开销浪费
*
* 参数说明:
* 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)' );
相关文章推荐
- MySQL存储过程----创建索引前,先判断索引是否已经存在,如果存在,则不添加,如果不存在,添加
- 判断本地系统目录下是否存在XML文件,如果不存在就创建一个XMl文件,若存在就在里面执行添加数据
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件。
- 判断本地系统目录下是否存在XML文件,如果不存在就创建一个XMl文件,若存在就在里面执行添加数据
- 通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- 【转】通过文件锁实现,程序开始运行时,先判断文件是否存在,若存在则表明该程序已经在运行了,如果不存在就用open函数创建该文件,程序退出时关闭文件并删除文件
- mysql判断表中字段或者索引是否存在,如果不存在则创建
- DELPHI判断目录是否存在,如果不存在则创建目录
- [完]PHP Array 创建、索引、添加、删除、判断是否存在指定元素
- ASP.NET判断物理路径下是否存在某文件,如果不存在则创建
- 哈哈,今天我又学会一小招——判断硬盘上是否存在某个文件夹,如果不存在则自动创建。
- ORACLE中判断表或视图是否存在,如果不存在再创建的方法
- 判断XML文件是否存在,不存在就创建一个XMl文件,存在就在里面添加一条数据
- 原生js实现增加(addclass),删除(removeclass),判断是否存在(hasclass),如果存在删除,如果不存在添加(toggleclass)和获取类名(getbyclass)的方法
- 如何判断一个已知的表中是否存在某个字段,如果不存在就创建它.
- python 判断目录是否存在,如果不存在则创建
- 如何判断一个已知的表中是否存在某个字段,如果不存在就创建它.
- ORACLE中判断表或视图是否存在,如果不存在再创建的方法
- mysql数据库表中判断字段是否存在,如果不存在则创建该字段
- C#判断目录是否存在,不存在就创建