一、索引是什么?
比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录。
对数据库来说,索引的作用就是给‘数据’加目录。
二、索引算法
设有N条随机记录,不用索引,平均查找N/2次,那么用了索引之后呢?
tree(二叉树)索引 log2N (logaA=Y (a的Y次方等于A))
hash(哈希)索引 1
三、优缺点
优点:加快了查询的速度(select)
缺点:降低了增删改的速度(update/delete/insert)
增加了表的文件大小(索引文件甚至可能比数据文件还大)
四、索引的使用原则
1.不过度使用索引;
2.索引条件列(where后面最频繁的条件比较适宜索引)
3.索引散列值,过于集中的值不要索引
例如:给性别列 ’男‘,’女‘加索引,意义不大
.frm:数据结构文件
.Myd:数据文件
.MYI:索引文件
(当加的索引比较多的时候,索引文件是很有可能比数据文件大的)
索引:
索引:是针对数据所建立的目录
作用:可以加快查询速度
负面影响:降低了增删改的速度
五、索引类型
1.普通索引:index 仅仅是加快了查询速度
2.唯一索引:unique index 行上的值不能重复
3.主键索引:primary key 不能重复
主键索引和唯一索引的区别:主键必唯一,但是唯一索引不一定是主键;
一张表上只能有一个主键,但是可以有一个或多个唯一索引
4.全文索引:fulltext index
六、查看某张表上的所有索引
show index from tablename [\G,如果是在cmd窗口,可以换行];
七、建立索引
alter table 表名 add index/unique/fulltext [索引名](列名) ; ---索引名可不写,不写默认使用列名
alter table 表名 add primary key(列名) --不要加索引名,因为主键只有一个
八、删除索引
删除非主键索引
alter table 表名 drop index 索引名;
删除主键索引:
alter table 表名 drop primary key;
九、案例
设有一张新闻表 15列,10列上有索引,共500w行数据,如何快速导入?
1.把空表的索引全部删除
2.导入数据
3.数据导入完毕后,集中建索引
十、全文索引与停止词
全文索引的用法:
match(全文索引名) against('keyword');
关于全文索引的停止词:
全文索引不针对非常频繁的词做索引
如:this,is,you,my等等
全文索引在MysqL的默认情况下,对于中文意义不大。
因为英文有空格,标点符号来拆成单词,进而对单词进行索引;
而对于中文,没有空格来隔开单词,MysqL无法识别每个中文词。
可以使用sphinx插件来进行全文索引的中文索引。
查看匹配度:
总结以上是内存溢出为你收集整理的MySql-索引全部内容,希望文章能够帮你解决MySql-索引所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)