簡體   English   中英

檢查列是否已編制索引 - MySql

[英]Check if a column is indexed - MySql

我需要編寫一個腳本來檢查列是否在其所屬的表中編入索引,如果沒有,則為其添加索引。 MySQL似乎沒有ADD INDEX IF NOT EXISTS

在MySQL中執行此操作的最佳方法是什么?

請參閱http://dev.mysql.com/doc/refman/5.1/en/create-index.html

有一個存儲過程可以做到這一點(記住,不是我的代碼,只是谷歌的第一次點擊與mysql add index if not exists作為搜索字符串)。

DELIMITER $$
DROP PROCEDURE IF EXISTS `create_index_if_not_exists`$$

CREATE DEFINER=`user`@`%` PROCEDURE `create_index_if_not_exists`(table_name_vc varchar(50), index_name_vc varchar(50), field_list_vc varchar(200))
SQL SECURITY INVOKER
BEGIN

set @Index_cnt = (
select  count(1) cnt
FROM    INFORMATION_SCHEMA.STATISTICS
WHERE   table_name = table_name_vc
and index_name = index_name_vc
);

IF ifnull(@Index_cnt,0) = 0 THEN set @index_sql = concat('Alter table ',table_name_vc,' ADD INDEX ',index_name_vc,'(',field_list_vc,');');

PREPARE stmt FROM @index_sql;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;

END IF;

END$$
DELIMITER ;

在同一頁面下方有一個替代版本。

也許這可以幫助你:

SHOW INDEX FROM my_table WHERE Key_name = 'index_to_check';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM