mysql如何添加索引

当一个数据库中的数量足够大的时候,索引就对快速搜索数据起到很重要的作用,当然规范的sql语句也对数据查询起到很重要的作用比如我这里有一张数据库表le_lommo 里面有数据
二千多万条
select count(1) from le_lommo
在这里插入图片描述
数据也是相当的大了,如果我使用不规范的sql 语句会是什么结果??

  select * from le_lommo

在这里插入图片描述
这里不仅仅导致查询缓慢的问题了,而是直接导致数据库崩了,所以sql语句规范书写是多么的重要!!当然数据过多的时候一般都会进行分库分表操作,这都是课外话题了,今天主要讲解的索引的使用废话不多说进入正题。
主键的分类:
1.主键索引;
2.普通索引;
3.唯一索引;
4.全文索引;

1.主键索引
一张表中只能有一个主键索引,但是可以添加多个索引
我们在创建表格的时候一般都是给每张表创建一个自增id
单独创建方法:alter table table_name add primary key(column name);
主键的特点:非空且唯一。
2.唯一索引
创建唯一索引:alter table table_name ADD unique(column);
主键索引和唯一索引的区别:
唯一索引:可以有多个null 内容不允许重复;
主键索引:不为null ,且内容唯一;
在这里插入图片描述
我在创建唯一索引的时候出现了这个错误,这就是上面提到的唯一索引的创建条件内容不为空,因为我的创建的索引列存在重复数据,因为数据量多大这里我也没有办法一一删除了,为了呈现效果我又单独增加了一列数据
在不增加索引的时候查询效率怎样呢?

select * from  le_lommo where site="shangahi@10002"

二千七百万条数据用了2.614s 我这是单表查询 哟

下面我们添加唯一索引 (创建索引也是相当的耗时 用了我12分钟左右
查询速度也是相当快的
在这里插入图片描述

3.普通索引
创建普通索引:alter table table_name add index 索引名(column)
4.全文索引
全文索引只有MyISAM y有效(mysql5.6之后的InnoDB也支持全文索引)
全文所有主要针对文本文件,标题, 文章等,
创建全文索引:

SELECT * FROM article WHERE MATCH(title,content) AGAINST (‘查询字符串');

创建完全文索引之后使用也有要注意的地方:
众所周知在数据库中进行模糊查询是使用like关键字进行查询的,例如:

SELECT * FROM article WHERE content LIKE ‘%查询字符串%';

那么,我们在使用全文索引也这样使用吗?当然不是,我们必须使用特有的语法才能使用全文索引进行查询,例如,我们想要在article表的title和content列中全文检索指定的查询字符串,我们可以如下编写SQL语句
SELECT * FROM article WHERE MATCH(title,content) AGAINST (‘查询字符串');

强烈注意:MySql自带的全文索引只能对英文进行全文检索,目前无法对中文进行全文检索。如果需要对包含中文在内的文本数据进行全文检索,我们需要采用Sphinx(斯芬克斯)/Coreseek技术来处理中文。

注:目前,使用MySql自带的全文索引时,如果查询字符串的长度过短将无法得到期望的搜索结果。MySql全文索引所能找到的词默认最小长度为4个字符。另外,如果查询的字符串包含停止词,那么该停止词将会被忽略。
如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。

如何删除索引

索引的优点:
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库每一行的数据的唯一性;
3.加速表与表之间的连接;
4.在使用分组和排序字句进行数据检索时,可以显著减少查询分组和排序的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值