mysql索引类型和方式,索引类型与索引方式

索引类型与索引方式

一、索引类型

mysql常用索引分为:普通索引、唯一索引、主键索引、组合索引、全文索引

1、普通索引关键字:Normal

普通索引是最基本的索引类型,唯一的任务是加快对数据的访问速度,没有任何限制。

默认会使用btree。

//1、 直接创建索引

create index index_name on table(column(length));

// 常规创建

create index index_name on user(name);

// 针对字符串的前几个字符进行创建索引,节省空间,减少比较时间、解决排序问题

create index index_name on user(name(5));

//2、修改表结构的方式新增索引

alter table table_name add index index_name(column(length));

// 常规创建

alter table user add index index_name(name);

//对字符串的前几个字符进行创建索引

alter table user add index index_name(name(10));

// 3、创建表的时候同时创建索引

CREATE TABLE `table` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`name` char(20) CHARACTER NOT NULL ,

PRIMARY KEY (`id`),

INDEX index_name (name(length))

)

// 4、删除索引

drop index index_name on table;

2、唯一索引

关键字:Unique

索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

//1、 创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(length))

// 常规创建

create unique index index_name on user(name);

//2、修改表结构

ALTER TABLE table_name ADD UNIQUE indexName(column(length))

// 常规创建

alter table user add unique index index_name(name);

// 3、创建表的时候直接指定

CREATE TABLE `table` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`name` char(20) CHARACTER NOT NULL ,

PRIMARY KEY (`id`),

UNIQUE INDEX index_name (name(length))

)

3、主键索引

是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。

CREATE TABLE `table` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`title` char(255) NOT NULL ,

PRIMARY KEY (`id`)

);

4、组合索引

指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。

ALTER TABLE `table` ADD INDEX name_city_age (name,city,age);

5、全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的- where语句的参数匹配。

fulltext索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用。

目前只有char、varchar,text 列上可以创建全文索引。

在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。

// 创建表的适合添加全文索引

CREATE TABLE `table` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`content` text CHARACTER NULL ,

PRIMARY KEY (`id`),

FULLTEXT (content)

);

// 修改表结构添加全文索引

ALTER TABLE article ADD FULLTEXT index_content(content)

// 直接创建索引

CREATE FULLTEXT INDEX index_content ON article(content)

二、索引方式

mysql索引方式分为:BTREE和HASH。

1、BTREE可理解为”排好序的快速查找结构”

每个叶子节点到根节点距离相等

所有被索引的列都是排过序的

适合范围查找、支持数据排序

2、HASH理论查询时间复杂度为O(1)

在磁盘随机存放数据

仅支持”=”,”IN”和”<=>”精确查询,不能使用范围查询

不支持排序

无法进行前缀索引

在任何时候都不能避免表扫描

检索效率高,索引的检索可以一次定位

只有Memory引擎支持显式的Hash索引

必须回行,通过索引拿到数据位置,必须回到表中取数据

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值