一般创建索引语句如下:
alter table add key `new_key` (`column1`)如果想在添加索引之前判断是否已存在该索引,sql语句该怎么写呢?
欢迎指教~~
alter table add key `new_key` (`column1`)如果想在添加索引之前判断是否已存在该索引,sql语句该怎么写呢?
欢迎指教~~
解决方案 »
- MYSQL报错!高手请进.......
- 对数据库不熟,特到此版请教,望不吝赐教
- 问个合并查询的问题~~~语法不清楚~~求解答
- 100分求建议,标题一定要长
- 求一条SQL语句!
- mysql_connect时指定数据库名为空,而在sql语句中指明数据库的方式是否线程安全?
- 谁来帮帮我~~??????????????????????????????
- 错误#1242 - Subquery returns more than 1 row
- Sql语句,当在页面插入一个字段的时候,和数据库中的表字段进行对比,有这个名字就数量相加
- mysql的Navicat使用的小问题,求大神解决?????
- mysql 语句 如何模糊搜索关键字只能匹配!
- 修改千万数据
* 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)'
);
找到了类似于这种写法的SP,先试试看:http://www.cnblogs.com/suiyingjie/archive/2013/01/07/2849536.html谢谢~~