mysql索引探究

一、什么是索引(WHIT IS THIS?)

索引是用来加速查询的一系列数据,通常都是放在一个文件表中,所以使用索引会增大储存空间。

原理:把常用来查询的数据(如果有增删操作,不建议用索引),建立索引,索引在一张表中,这张表是有序的,可以用二分法查找,表的数据储存的就是数据存放的位置,通过使用二分法来快速查找,定位到数据。


二、索引的作用(WHAT CAN IT DO?)

用来加速查找


三、建立索引的方式(HOW TO DO ?)

建立:

ALTER TABLE table_name ADD INDEX index_name (column_list)

ALTER TABLE table_name ADD UNIQUE (column_list)

ALTER TABLE table_name ADD PRIMARY KEY (column_list)

删除:

DROP INDEX index_name ON talbe_name

ALTER TABLE table_name DROP INDEX index_name

ALTER TABLE table_name DROP PRIMARY KEY

查看:

show index from tblname;


四、各种索引的区别

1.普通索引-最普通的索引,这里不多说了

2.唯一索引-值不重复,主键也是唯一索引

3.全文索引-用来检索字段中的词

创建全文索引的语句如下:

alter table table_name add fulltext index index_name(col_name);

使用全文索引:

select * from table_name where match ('col_name') against('xxx');

删除全文索引:

alter table table_name drop index index_name;(注意这里是index不是fulltext index)


全文索引的原理:(摘自百度百科)

原理是先定义一个词库,然后在文章中查找每个词条(term)出现的频率和位置,把这样的频率和位置信息按照词库的顺序归纳,这样就相当于对文件建立了一个以词库为目录的索引,这样查找某个词的时候就能很快的定位到该词出现的位置。
问题在处理英文文档的时候显然这样的方式是非常好的,因为英文自然的被空格分成若干词,只要我们有足够大的词汇库就能很好的处理。但是亚洲文字因为没有空格作为断词标志,所以就很难判断一个词,而且人们使用的词汇在不断的变化,而维护一个可扩展的词汇库的成本是很高的,所以问题出现了。
解决出现这样的问题使“分词”成为全文索引的关键技术。目前有两种基本的方法:
二元法 它把所有有可能的每两两汉字的组合看为一个词组,这样就没有维护词库的开销。
词库法 它使使用词库中的词作为切分的标准,这样也出现了词库跟不上词汇发展的问题,除非你维护词库。
实际上现在很多著名的 搜索引擎都使用了多种分词的办法,比如“正向最大匹配”+“逆向最大匹配”,基于统计学的新词识别,自动维护词库等技术,但是显然这样的技术还没有做到完美。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值