加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL中索引的定义及操作

发布时间:2022-09-17 15:23:21 所属栏目:MySql教程 来源:
导读:  文章目录

  索引的定义

  数据库中的索引就像一本书的目录,可以据此快速定位数据库中相关数据的所在位置。

  在数据库中,索引被定义为一种特殊的数据结构,由数据库中的一列或多列组合而成,
  文章目录
 
  索引的定义
 
  数据库中的索引就像一本书的目录,可以据此快速定位数据库中相关数据的所在位置。
 
  在数据库中,索引被定义为一种特殊的数据结构,由数据库中的一列或多列组合而成,可以用来快速查询数据表中某一特定值的记录。
 
  索引是在表的字段的基础上建立的一种数据库对象,它由DBA或者表的拥有者创建或撤销,他是创建表与表之间关联关系的基础。
 
  索引的类型 普通、唯一、主键和全文索引 普通索引(INDEX)
 
  普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入空值和重复值。
 
  创建普通索引的几种方式:
 
  # 1.直接创建索引
  create index index_name on table(column(length));
  # 2. 以修改表结构创建
  alter table table_name add index index_name on column(length);
  # 3. 创建表的同时创建索引
  create table user(
   id CHAR(6) not null,
   name CHAR(255) not null,
   primary key(id),
   index user_name(name(length));
  )
  唯一索引(UNIQUE INDEX)
 
  唯一索引指索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。
 
  创建唯一索引的几种方式:
 
  # 1.直接创建索引
  create unique index index_name on table(column(length));
  # 2. 以修改表结构创建
  alter table table_name add unique index index_name on column(length);
  # 3. 创建表的同时创建索引
  create table user(
   id CHAR(6) not null,
   name CHAR(255) not null,
   primary key(id),
   unique index user_name(name(length));
  )
  主键索引(PRIMARY KEY)
 
  主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。
 
  全文索引(FULLTEXT)
 
  全文索引的类型为FULLTEXT,表示在定义索引的列上支持值的全文查找,允许插入重复值或空值。
 
  全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。
 
  MySQL中只有MyISAM存储引擎支持全文索引。
 
  全文索引可以在进行创建表、更新表和创建索引时使用MySQL 创建数据表,目前只支持CHAR、VARCHAR、TEXT列创建全文索引。
 
  单列索引和组合索引 聚集索引和非聚集索引 聚集索引非聚集索引
 
  一个表只能有一个
 
  一个表可以有多个
 
  物理连续
 
  逻辑连续,物理不连续
 
  查询快,插入慢(需要移动物理位置)
 
  回表查询
 
  索引的叶节点就是数据节点
 
  索引的叶节点仍然是索引节点,通过一个指针指向对应的数据块。
 
  索引的创建原则 1. 创建索引由专人完成 2.是否创建索引取决于表的数据量 3.索引数量要适度 4.避免使用索引的情形
 
  (1)包含太多重复值的字段。
 
  (2)查询中很少被引用的字段。
 
  (3)值特别长的字段。
 
  (4)查询返回率很高的字段。
 
  (5)具有很多NULL值的字段。
 
  (6)需要经常增、删、改的字段。
 
  (7)记录较少的基本表。
 
  (8)需要频繁、大批量进行数据更新的基本表。
 
  索引操作 创建索引
 
  create table <table_name> [<fields_name> type]
  [UNIQUE|FULLTEXT][INDEX|KEY]
  <index_name> (<column_name > [length]) [ASC|DESC]
  查看索引
 
  show index from <table_name> [from <database_name>]
  删除索引 删除索引
 
  drop index <index_name> from <table_name>
  通过修改表结构删除
 
  alter table <table_name> drop index <index_name>
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!