数据库处理效率是系统性能的关键,当面对十万级甚至百万级数据时,“查询卡顿”成为常见问题,而索引正是解决这一问题的核心工具。想要高效管理索引,就必须熟练运用创建、查看和删除索引的SQL语句,让数据库操作更流畅。
一、创建索引:为查询铺路
创建索引是优化查询的第一步,可在创建表时同步完成,也可在已存在的表上新增,不同场景需搭配不同SQL语句:
在创建表时,可直接定义索引。比如普通索引用“INDEX 索引名(列名)”,如创建book表时,通过CREATE TABLE book(book_id INT, book_name VARCHAR(100), INDEX idx_bname(book_name))为book_name列创建普通索引;若需保证字段唯一性,可用唯一性索引,语句中加入“UNIQUE”,如CREATE TABLE book1(COMMENT VARCHAR(100), UNIQUE INDEX uk_idx_cmt(COMMENT));主键索引则通过“PRIMARY KEY”定义,数据库会自动生成,例如CREATE TABLE book2(book_id INT PRIMARY KEY),此时book_id列会被赋予主键索引。
若表已创建,可用ALTER TABLE或CREATE INDEX语句补建索引。比如为book5表的COMMENT列加普通索引,可写ALTER TABLE book5 ADD INDEX idx_cmt(COMMENT),也可用CREATE INDEX idx_cmt ON book5(COMMENT),两种方式效果一致。这里可能有读者疑惑:哪些列适合建索引?通常查询频繁、作为筛选条件(如WHERE子句中的列)或用于连接的列(如JOIN中的关联列)更适合,而数据重复率高的列(如“性别”)则不建议,否则索引效果有限。
二、查看索引:了解索引现状
创建索引后,需定期查看索引状态,避免重复创建或遗漏关键索引。常用的查看语句有两种:
用SHOW CREATE TABLE 表名,如SHOW CREATE TABLE book,可在返回的表结构中看到已创建的索引信息;
用SHOW INDEX FROM 表名,如SHOW INDEX FROM book5,能详细列出索引名称、关联列等属性,清晰掌握索引全貌。
查看时要注意什么?需关注索引是否被频繁使用——若某索引长期未被查询调用,可能就是冗余索引,这也为后续删除操作提供依据,而创建、查看和删除索引的SQL语句正是通过这样的流程形成管理闭环。
三、删除索引:移除无效负担
索引并非越多越好,冗余索引会降低写入效率,需及时删除。删除索引的SQL语句需根据索引类型调整:
主键索引需通过删除主键约束实现,如ALTER TABLE book2 DROP PRIMARY KEY;
普通索引或唯一性索引,可用ALTER TABLE 表名 DROP INDEX 索引名,如ALTER TABLE book5 DROP INDEX idx_cmt,也可用DROP INDEX 索引名 ON 表名,如DROP INDEX uk_idx_bname ON book5。
需注意:若删除表中某列,而该列是索引的组成部分,此列会从索引中移除;若索引的所有列都被删除,整个索引会自动消失。另外,删除索引前建议先备份或测试,避免误删关键索引导致查询性能骤降。
总之,创建、查看和删除索引的SQL语句是数据库优化的基础工具。合理运用这些语句,既能通过索引加速查询,又能及时清理冗余索引减少资源消耗,让数据库在高效与稳定之间找到平衡,为系统性能提供坚实支撑。如需了解如何批量删除,推荐阅读《别让重复劳动拖慢进度!SQL批量删除语句的进阶技巧》