Skip to content

Latest commit

 

History

History
16 lines (14 loc) · 2.24 KB

sql.md

File metadata and controls

16 lines (14 loc) · 2.24 KB

数据库索引

索引用来快速查找具有特定值的记录,以B+树(平衡树)的形式保存。索引大大提高了查询速度,但是降低了更新表的速度。建立索引会占用磁盘空间,创建多种组合索引会占用大量空间。索引只是提高效率的一个因素,如果有大数据量的表,需要研究建立最优秀的索引,优化查询语句。

索引的类型

  1. 普通索引:CREATE INDEX index_name ON table_name (column_name) 最基本的索引类型,而且它没有唯一性之类的限制,即允许该列有重复的值
  2. 唯一性索引:CREATE UNIQUE INDEX index_name ON table_name (column_name)
  3. 主键索引: ALTER TABLE table_test ADD PRIMARY KEY (id) 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值,一般是在建表的时候同时自动创建主键索引
  4. 组合索引:ALTER TABLE table ADD INDEX name_city_age (name,city,age)指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合
  • 聚集索引:如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是「平衡树」结构,换句话说,就是整个表就变成了一个索引,也就是所谓的「聚集索引」,一个表只能有一个聚集索引。 平衡树的查找次数是以树的层数为底,记录总数的对数
  • 非聚集索引:同样采用平衡树作为索引的数据结构,各节点的值类源于索引字段值。每次给字段新建索引,字段数据会被复制一份用于生成索引。
  • 通过聚集索引可以查到需要查找的数据, 而通过非聚集索引可以查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。
  • 覆盖索引:也就是平时所说的复合索引或者多字段索引查询。当为字段建立索引以后,字段中的内容会被同步到索引之中,如果为一个索引指定两个字段,那么这个两个字段的内容都会被同步至索引之中。因此不需要通过主键ID值的查找数据行的真实所在,直接取得叶节点中查询字段的值返回即可。