MySql必须知道的一些知识(一)数据库索引

MySql的索引

索引介绍

索引是对数据库表中一列或多列的值进行排序的一种结构。使用索引可快速访问数据库表中的特定信息,目的就是加快检索表中数据。摘自百度百科。

举个例子:
当我们要查询用户名为tom的用户时。sql语句:select * from user where name=‘tom’;
不建立索引:查询所有表中所有的行,如果一个表有上万条数据,在实际应用中当你执行多次或多个sql语句,此时效率就很低了。
建立索引:如果建立了索引,数据库直接找到这行数据,性能肯定提升了好多。
缺点:

  • 降低了表更新速度,因为不仅要保存数据,还有索引文件
  • 建立索引的索引文件增长很快,占用磁盘空间

索引类型

单列索引:一个索引只对某一个列起作用,一个表可以有多个索引。
组合索引:一个索引对多个列起作用。

使用索引

普通索引

//创建表时创建
create table user(
id int auto_increment,
name varchar(20),
primary key(id),
index index_name(name)
);
//直接创建索引
create index index_name on table(column(length));
//修改表结构创建
alter table table_name add index index_name(column(length));
//查看索引
show index from table_name;
//删除索引
drop index index_name on table_name;

组合索引只是添加多个列
create index index_name on table(column1(length),column2(length),…);

唯一索引

索引列的值必须唯一,可以有空值。组合唯一索引时,组合的列值唯一

//使用unique关键字创建
create table user(
id int auto_increment,
name varchar(20) unique,
primary key(id)
);
或者
create table user(
id int auto_increment,
name varchar(20),
primary key(id),
unique index_name(column(length))
);
//直接创建
create unique index index_name on table(column(length));
//修改表结构创建
alter table table_name add unique index_name(column(length));

组合唯一索引只是添加多个列
create unique index index_name on table(column1(length),column2(length),…);

主键索引

主键索引是特殊的唯一索引,不允许有空值,且该列的值应保持与业务不相关,int优于varchar,可以设置自增。

全文索引

全文索引和其他的索引有些差别,主要是查找文本的关键字,不是直接与索引的值进行比较。MyISAM引擎支持,且是char,varchar,text类型可以创建该索引。该索引可以解决like模糊查询效率低下的问题。网上说:在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。不知道为什么,知道的希望告知一下。

//创建表时创建
create table user(
id int auto_increment,
name varchar(20),
des text,
primary key(id),
fulltext(des)
)Type=MyISAM;
//直接创建
create fulltext index index_name on table(column)
//修改表结构创建
alter table table_name add fulltext index_name(column);

查询(我没有查询出数据,望告知)

//查询时是分词的形式,以词为单位,
select * from table_name where match(column) against ('要查的词');
//查询可以有多列(前提是创建联合全文索引),逗号分隔
select * from table_name where match(column1,column2) against ('我要');

如果要查的词前面添加 +,则表示一定包含该词,- 则一定不包含,*表示通用匹配符
一般不使用文本索引,其限制性太大,一般使用搜索引擎来查询。可以参考另一篇:solr搜索引擎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈大侠在江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值