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