跳转至

索引(INDEX)

索引用于 加快查询速度,类似于书本的“目录”。 但索引过多会增加写入、更新成本,因此要合理设计。


添加索引(CREATE INDEX)

  • MySQL/SQL Server/PostgreSql/Oracle
-- 创建普通索引
CREATE INDEX 索引名 ON 表名(列名);

-- 创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名);

修改索引名(RENAME)

  • MySQL
-- 修改索引名称(MySQL 8.0+)
ALTER TABLE 表名 RENAME INDEX 旧索引名 TO 新索引名;
  • SQL Server
-- 重命名索引
EXEC sp_rename '表名.旧索引名', '新索引名', 'INDEX';
  • PostgreSQL
-- 修改索引名称
ALTER INDEX 旧索引名 RENAME TO 新索引名;
  • Oracle
-- 修改索引名称
ALTER INDEX 旧索引名 RENAME TO 新索引名;

删除索引(DROP INDEX)

  • MySQL
-- 删除索引
DROP INDEX 索引名 ON 表名;
或者
ALTER TABLE 表名 DROP INDEX 索引名
  • SQL Server
-- 删除索引
DROP INDEX 索引名 ON 表名;
  • PostgreSQL
-- 删除索引
DROP INDEX 索引名;
  • Oracle
-- 删除索引
DROP INDEX 索引名;

总结对比

操作类型 MySQL SQL Server PostgreSQL Oracle
添加索引 CREATE [UNIQUE] INDEX ... ON 表名(列) 同上 同上 同上
修改索引名 ALTER TABLE RENAME INDEX sp_rename ALTER INDEX RENAME TO ALTER INDEX RENAME TO
删除索引 DROP INDEX 索引名 ON 表名 DROP INDEX 索引名 ON 表名 DROP INDEX 索引名 DROP INDEX 索引名

实战建议:

  • 查询频繁的字段(WHERE / JOIN / ORDER BY)可加索引。
  • 不建议为低选择性(重复率高)的字段建索引,如性别、是否删除等。