本文共 1661 字,大约阅读时间需要 5 分钟。
索引可以从以下几个方面进行分类:
按功能逻辑划分:
按物理实现划分:
按作用字段个数划分:
创建索引可以在表创建时或表已存在时进行。
创建表时可以通过以下方式添加索引:
CREATE TABLE book ( book_id INT, book_name VARCHAR(100), authors VARCHAR(100), info VARCHAR(100), comment VARCHAR(100), year_publication YEAR, INDEX year_publication);
ALTER TABLE book ADD INDEX idx_cmt(comment);
删除索引可通过以下命令执行:
ALTER TABLE book DROP INDEX idx_cmt;
MySQL 8.0 支持真正的降序索引,InnoDB 存储引擎在排序时直接使用索引顺序。
MySQL 8.x 支持隐藏索引,允许对索引进行软删除,避免频繁删除索引带来的性能影响。
通过设置 use_invisible_indexes
为 on
,可以控制索引对优化器的可见性。
准备好数据后,可以通过存储过程和函数进行数据插入。
字段具有唯一性限制:
频繁作为 WHERE 查询条件的字段:
经常 GROUP BY 和 ORDER BY 的列:
UPDATE 和 DELETE 的 WHERE 条件列:
DISTINCT 字段需要创建索引:
多表 JOIN 连接操作的 WHERE 条件列:
使用类型小的列创建索引:
使用字符串前缀创建索引:
区分度高的列适合作为索引:
使用最频繁的列放到联合索引的左侧:
在多个字段都要创建索引的情况下,联合索引优于单值索引:
建议单张表的索引数目不要超过 6 个,避免索引过多带来的性能负担。
在 WHERE 中使用不到的字段,不要设置索引:
数据量小的表最好不要使用索引:
有大量重复数据的列上不要建立索引:
避免对经常更新的表创建过多的索引:
不建议用无序的值作为索引:
删除不再使用或者很少使用的索引:
不要定义冗余或重复的索引:
转载地址:http://fmdfk.baihongyu.com/