众所周知在数据量庞大的情况下普通的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在数据小时具有无可比拟的优势,所以很适合用来做缓存。

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

最新文章

  1. SQL系统数据库简介(mssqlsystemresource)
  2. IOS第14天(1,UITabBarController的基本的使用)
  3. Effective Objective-C 2.0 学习记录
  4. EasyUI-panel 内嵌页面上的js无法被执行
  5. setSupportActionBar(toolbar)导致程序崩溃闪退
  6. eclipse如何连接oracle 11g数据库
  7. 垃圾收集器GC的种类
  8. bootstrap .col-md-6 文字居中问题处理
  9. 职责链模式vs状态模式区别
  10. JSP控制select不可再选择
  11. swift论坛正式上线
  12. 2016-09-07 J2EE基础知识之JSP_部分
  13. stringstream转换CString为string出错
  14. 开发检测MySQL主从同步插件
  15. Table对象代表一个HTML表格,在文档中&lt;table&gt;标签每出现一次,一个table对象就会被创建。
  16. JS学习笔记 等于和包装对象
  17. [译]使用Command模式和MediatR简化你的控制器
  18. ant 相关命令
  19. the security of smart contract- 1
  20. selenium实战脚本集(1)——新浪微博发送QQ每日焦点

热门文章

  1. 排序算法Nb三人组-归并排序
  2. UFW Essentials: Common Firewall Rules and Commands
  3. 06_zookeeper原生Java API使用
  4. 20.远程分支&amp;跟踪分支
  5. SQL Server -&gt;&gt; 无法将数据库从SINGLE_USER模式切换回MULTI_USER模式(Error 5064)
  6. Linux -&gt;&gt; Ubuntu 14.04 LTE下配置SSH免密码登录
  7. Day02——Python基本数据类型
  8. Linux-&gt;ZooKeeper开机启动的俩种方式
  9. JS调用AngularJS中的方法
  10. Yii2用Gii自动生成Module+Model+CRUD