一般创建索引语句如下:
alter table add key `new_key` (`column1`)如果想在添加索引之前判断是否已存在该索引,sql语句该怎么写呢?
欢迎指教~~

解决方案 »

  1.   

    没有这样的SQL语句,只有用SP判断
      

  2.   

    参数说明:  
     * 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)'  
    );  
      

  3.   

    原来是没有这样的写法。
    找到了类似于这种写法的SP,先试试看:http://www.cnblogs.com/suiyingjie/archive/2013/01/07/2849536.html谢谢~~