MySQL索引类型、方法学习笔记

索引类型

  1. FULLTEXT:
    • 用途:用于全文搜索,通常用于大型文本字段,如文章或博客。使用方法:在创建表时或之后,使用FULLTEXT关键字为字段或字段组合创建索引。
  2. NORMAL:
    • 用途:最常见的索引类型,适用于大多数搜索和排序操作。使用方法:默认情况下,如果不指定索引类型,创建的索引就是NORMAL
  3. SPATIAL:
    • 用途:用于空间数据类型,如地理空间数据。使用方法:使用SPATIAL关键字创建空间索引。
  4. UNIQUE:
    • 用途:确保索引列中的所有值都是唯一的,常用于主键或唯一约束。使用方法:创建表时或在表创建后,使用UNIQUE关键字。

索引方法

  1. BTREE:
    • 用途:最常用的索引方法,适用于等值和范围查询。使用方法:大多数MySQL存储引擎(如InnoDB和MyISAM)默认使用BTREE索引。
  2. HASH:
    • 用途:通过散列函数快速定位键值,适用于等值查询,但不支持范围查询。使用方法:主要在MEMORY存储引擎中使用。

主要索引类型

  1. 普通索引(Normal): 这是最基本的索引类型,没有特殊限制。它允许被索引的列包含重复值和NULL值。普通索引主要用于提高查询效率。
  2. 唯一索引(Unique): 唯一索引保证索引列的每一行数据的唯一性。如果尝试插入重复的值,数据库将拒绝这些操作。唯一索引适用于需要强制数据唯一性的场景,如用户邮箱、身份证号等。
  3. 全文索引(Full Text): 全文索引适用于对文本内容进行搜索,特别是在处理大量文本数据时,如文章或评论内容。全文索引使用倒排索引技术,可以快速定位包含特定词汇的文档。
  4. 空间索引(Spatial): 空间索引用于空间数据类型,如地理信息系统中的地理位置数据。它允许进行空间位置查询和计算,如查找特定区域内的点或形状。

索引的存储方法

索引的存储方法决定了索引的物理结构和检索效率。常见的索引方法包括:

  1. BTree索引: B-Tree索引是最常用的索引结构,支持全键值、键值范围和键值排序的搜索。B-Tree索引适用于大多数场景,特别是需要范围查询的情况。
  2. Hash索引: Hash索引基于哈希表实现,适用于等值比较查询,如使用”=”操作符。它的检索效率非常高,因为可以一次定位数据。但是,Hash索引不支持范围查询和排序操作。

索引的选择原则

在实际应用中,选择合适的索引对于优化数据库性能至关重要。以下是一些选择索引的基本原则:

  1. 选择具有唯一性的列作为索引,如主键或具有唯一约束的列。
  2. 为经常需要进行排序、分组或联合操作的列建立索引。
  3. 为常用作查询条件的列建立索引,以提高查询效率。
  4. 限制索引的数量,因为过多的索引会增加维护成本并降低写操作的性能。
  5. 使用数据量小的列作为索引,以减少索引的存储空间。
  6. 使用前缀索引来减少索引大小,特别是对于文本类型的列。
  7. 删除不再使用或很少使用的索引,以避免不必要的性能开销。

总结

  1. FULLTEXTSPATIAL索引类型有特定的使用场景,不要用于常规的数值或字符串比较。
  2. UNIQUE索引可以保证列值的唯一性,但也可能降低插入和更新操作的性能。
  3. BTREE索引适用于大多数场景,特别是当你需要进行范围查询时。
  4. HASH索引适用于固定且经常查询的数据,但不适用于范围查询,因为它们不保持数据的排序,无法避免全表扫描

评论

  1. 博主
    Windows Chrome
    广东省佛山市 联通
    已编辑
    3 月前
    2024-10-10 19:31:11

    顺便记录一下创建外键的两个要点:

    1. ENGINE不可以为MyISAM,外键约束是InnoDB存储引擎才有的特性,可以自行导出数据库查看是否符合。
    2. 假如有主表从表从表中的某个字段需要收到主表中操作的影响,则需要在从表创建外键而不是在主表

发送评论 编辑评论


				
上一篇
下一篇