首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 索引操作命令大全:創建、重建、查詢、刪除索引語法詳解

     編輯:MySQL 綜合教學

索引全生命周期管理命令速查,含 ALTER TABLE、CREATE INDEX、REPAIR TABLE、SHOW INDEX、DROP INDEX 五大類,附參數說明與示例。

一、 創建索引


-- ALTER TABLE 方式(推薦,支持多索引單條語句)
ALTER TABLE `t` ADD INDEX `idx_name` (`name`);
ALTER TABLE `t` ADD UNIQUE INDEX `uk_email` (`email`);
ALTER TABLE `t` ADD PRIMARY KEY (`id`);           -- 僅無主鍵時
ALTER TABLE `t` ADD INDEX `idx_multi` (`a`,`b`);  -- 聯合索引

-- CREATE INDEX 方式(不支持主鍵)
CREATE INDEX `idx_name` ON `t` (`name`);
CREATE UNIQUE INDEX `uk_email` ON `t` (`email`);

二、 重建索引


-- 快速重建(MyISAM/InnoDB 5.6+ Online DDL)
REPAIR TABLE `t` QUICK;
-- 或
OPTIMIZE TABLE `t`;        -- 同時整理碎片、更新統計
-- 或 5.6+ 
ALTER TABLE `t` ENGINE=InnoDB;  -- 重建表、重建所有索引

三、 查詢索引


SHOW INDEX FROM `t`\G;
SHOW KEYS FROM `t`\G;      -- 等價
-- 關鍵列:Key_name, Seq_in_index, Column_name, Non_unique, Cardinality, Sub_part, Index_type

四、 刪除索引


-- DROP INDEX(需指定索引名)
DROP INDEX `idx_name` ON `t`;
-- ALTER TABLE 方式
ALTER TABLE `t` DROP INDEX `idx_name`;
ALTER TABLE `t` DROP PRIMARY KEY;   -- 僅刪主鍵,無需索引名

五、 索引元數據查詢模板(信息 Schema)


SELECT 
  INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX, NON_UNIQUE, CARDINALITY, SUB_PART, INDEX_TYPE
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 't'
ORDER BY INDEX_NAME, SEQ_IN_INDEX;

六、 避坑提醒

  • 刪除列會級聯刪除索引中該列;刪除組合索引所有列 → 索引自動消失。
  • REPAIR TABLE 僅 MyISAM 有效,InnoDB 用 OPTIMIZE 或 ALTER ENGINE。
  • 主鍵只能有一個,DROP PRIMARY KEY 不需索引名。

收藏此頁,索引增刪改查手到擒來。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved