关于mysql创建索引 一般创建索引语句如下:alter table add key `new_key` (`column1`)如果想在添加索引之前判断是否已存在该索引,sql语句该怎么写呢?欢迎指教~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有这样的SQL语句,只有用SP判断 参数说明: * 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谢谢~~ MySql服务启动不了...急 MySQL同时select两个field完全相同的表? 大家帮我看看mysql查询语句如何写 把A表部分数据拷贝到B表 “鎔,昇”这些字怎么能正确插入到MYSQL里? mysql备份问题!急 MYSQL:求记录总数 大赠送,我站赠送QQ号及虚拟主机、国际域名,详情见贴内! mysql 存储过程 mysql5.7 json字段过滤问题 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谢谢~~