博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于MySQL优化问题
阅读量:6690 次
发布时间:2019-06-25

本文共 810 字,大约阅读时间需要 2 分钟。

众所周知在数据量庞大的情况下普通的SQL语句已经满足不了我们的需要了,这个时候就需要DBA去进行数据库的优化,而我们作为一名开发人员不能对数据库进行优化这时该怎么办呢?答案是只能在SQL语句上面进行优化,一般都会建立索引来达到SQL语句优化的目的。

问题来了,为什么建立索引就会优化我们的查询速度呢?

数据库在执行一条查询语句时,默认是根据搜索条件全表检索,遇到符合条件的就加入搜索结果的集合,如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。

 添加索引的话,首先去索引列表中查询,而我们的索引列表是B类树的数据结构,查询的时间复杂度为O(log2N),定位到特定值得行就会非常快,所以其查询速度就会非常快。

MySQL目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE

fulltext就是全局索引,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。

 

hash就是一种(key,value)的键值对,每个key都是唯一的不允许重复,就是利用这个特性hash才会适合做索引,hash索引是通过hash算法算出位置进行一次定位,效率比较高。

hash索引仅能满足in、=、<=>几种查询方式、hash索引每次都要遍历hash表,在数据量小的情况下没有什么关系,数据量一大反而不如B树效率高

 

B树就是将索引值按一定的算法存入一个树形结构图中,如二叉树一样在root开始,依次遍历,直到获取。

 

至于R树,在这里不研究。怎么样也不知道。

 

mysql的默认索引是B树,hash在数据小时具有无可比拟的优势,所以很适合用来做缓存。

 

本次只是对索引简单的介绍,有机会补充。

转载于:https://www.cnblogs.com/jianwind/p/9627487.html

你可能感兴趣的文章
Error:Could not load SWT library
查看>>
ofo摩拜合并 是竞争格局的终点吗
查看>>
思科 核心4506 X4516升级CF卡
查看>>
gitlab bitnami 安装
查看>>
dns本地缓存性能压力测试
查看>>
python之网络编程
查看>>
让select查询结果额外增加自增的伪序号列
查看>>
代理设计模式
查看>>
awk常用注意事项--awk如何引用外部变量
查看>>
mysql5.7制作rpm包spec文件
查看>>
mysq基础笔记(sql语句)
查看>>
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Apache Indexes FollowSymLinks详解
查看>>
Qt中的viewport与window
查看>>
《Servlet学习笔记》Servlet接口实现类
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>