MySQL索引基础

1,索引概述

一种数据结构,提供了一种快速的查找能力行一个的表,典型地通过形成的树结构(B树) 表示特定的所有值 列或列的集合。

InnoDB表总是有一个表示主键的聚集索引。它们还可以在一个或多个列上定义一个或多个二级索引。根据其结构,二级索引可以分为部分索引、 列索引或复合索引。

索引是查询性能的一个关键方面 。数据库架构师设计表、查询和索引以允许快速查找应用程序所需的数据。理想的数据库设计 在可行的情况下使用覆盖索引;查询结果完全根据索引计算,没有读取实际的表数据。每个外键约束还需要一个索引,以有效地检查值是否存在于父表和子表中。

尽管B树索引是最常见的,但哈希索引使用了不同类型的数据结构,如MEMORY存储引擎和InnoDB 自适应哈希索引。 R-tree索引用于多维信息的空间索引。

2,普通索引

这是最基本的索引类型,基于普通字段建立的索引,没有任何限制。

CREATE INDEX <索引的名字> ON tablename (字段名);

ALTER TABLE tablename ADD INDEX [索引的名字] (字段名);

CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名) );

3,唯一索引

与"普通索引"类似,不同的就是:索引字段的值必须唯一,但允许有空值 。在创建或修改表时追加唯一约束,就会自动创建对应的唯一索引。

CREATE UNIQUE INDEX <索引的名字> ON tablename (字段名);

ALTER TABLE tablename ADD UNIQUE INDEX [索引的名字] (字段名);

CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (字段名) ;

4,主键索引

它是一种特殊的唯一索引,不允许有空值。在创建或修改表时追加主键约束即可,每个表只能有一个主键。

CREATE TABLE tablename ( [...], PRIMARY KEY (字段名) );

ALTER TABLE tablename ADD PRIMARY KEY (字段名);

5,复合索引

在多个列上建立索引,这种索引叫做组复合索引(组合索引)。复合索引可以代替多个单一索引,相比多个单一索引复合索引所需的开销更小。 索引同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超 过2列的索引,设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效。

CREATE INDEX <索引的名字> ON tablename (字段名1,字段名2...);

ALTER TABLE tablename ADD INDEX [索引的名字] (字段名1,字段名2...);

CREATE TABLE tablename ( [...], INDEX [索引的名字] (字段名1,字段名2...) );

6,全文索引

查询操作在数据量比较少时,可以使用like模糊查询,但是对于大量的文本数据检索,效率很低。如果使用全文索引,查询速度会比like快很多倍。在MySQL 5.6 以前的版本,只有MyISAM存储引擎支持全文索引,从MySQL 5.6开始MyISAM和InnoDB存储引擎均支持。

CREATE FULLTEXT INDEX <索引的名字> ON tablename (字段名);

ALTER TABLE tablename ADD FULLTEXT [索引的名字] (字段名);

CREATE TABLE tablename ( [...], FULLTEXT KEY [索引的名字] (字段名) ;

和常用的like模糊查询不同,全文索引有自己的语法格式,使用 match 和 against 关键字

select * from user

where match(name) against('发呆');

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、索引分 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引。 组合索引,即一个索引包含多个列。 《--...
    简_easy阅读 1,527评论 0 1
  • 更多精彩欢迎关注公众号 xhJaver 哟 一、 索引数据结构 面试的时候肯定会问这一个问题,mysql为什么会选...
    java小杰要加油阅读 1,618评论 0 0
  • 索引类型分为普通索引、唯一索引、主键索引、全文索引。 1.创建索引 普通索引类型 详细说明基本语法 alt...
    geeooooz阅读 3,783评论 0 0
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,349评论 5 116
  • 查看表的建表语句 SHOW CREATE TABLE xxx;查看xxx表的建表语句 修改字段的类型、长度等 AL...
    秋慕云阅读 4,436评论 1 13