mysql索引原理是什么?-mysql教程-学派吧

本篇文章主要给大家介绍mysql索引原理,希望对需要的朋友有所帮助!(相关推荐:《mysql教程》)

mysql索引原理是什么?-mysql教程-学派吧

索引的目的

索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?

mysql索引原理

除了词典,生活中随处可见索引的例子,如火车站的车次表、图书的目录等。它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。

数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>、<、between、in)、模糊查询(like)、并集查询(or)等等。数据库应该选择怎么样的方式来应对所有的问题呢?

我们回想字典的例子,能不能把数据分成段,然后分段查询呢?最简单的如果1000条数据,1到100分成第一段,101到200分成第二段,201到300分成第三段……这样查第250条数据,只要找第三段就可以了,一下子去除了90%的无效数据。

但如果是1千万的记录呢,分成几段比较好?稍有算法基础的同学会想到搜索树,其平均复杂度是lgN,具有不错的查询性能。但这里我们忽略了一个关键的问题,复杂度模型是基于每次相同的操作成本来考虑的,数据库实现比较复杂,数据保存在磁盘上,而为了提高性能,每次又可以把部分数据读入内存来计算,因为我们知道访问磁盘的成本大概是访问内存的十万倍左右,所以简单的搜索树难以满足复杂的应用场景。

以上就是mysql索引原理是什么?的详细内容,更多请关注php中文网其它相关文章!

主题测试文章,只做测试使用。发布者:云大使,转转请注明出处:https://www.xp8.net/data/3421.html

赞 (0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年4月9日 下午8:55
MySQL执行过程以及查询缓存的详细介绍-mysql教程-学派吧
下一篇 2019年4月9日 下午8:56

相关推荐

  • php中mysqli处理查询结果集的多个方法-mysql教程

    最近对php查询mysql处理结果集的几个方法不太明白的地方查阅了资料,在此整理记下(相关推荐:mysql教程) Php使用mysqli_result类处理结果集有以下几种方法 fetch_all() 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集。 fetch_array() 以一个关联数组,数值索引数组,或者两者皆有的方式抓取…

    数据库运维 2019年4月24日
    3.7K00
  • MySQL数据库索引的内容介绍-mysql教程-学派吧

    本篇文章给大家带来的内容是关于MySQL数据库索引的内容介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 存储引擎是数据库的核心,常用的MySQL存储引擎有InnoDB,MyISAM,memory.索引是加速数据的查询的一种数据结构. 1. 索引简介 1.1 索引优点 查询数据块 数据唯一性 加速表之间的连接 1.2 索引缺点 索引会占用…

    数据库运维 2019年4月9日
    2.8K00
  • Navicat查看MySQL日志的教程-学派吧

    本篇文章给大家带来的内容是关于Navicat查看MySQL日志的方法教程(图),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1、使用Navicat服务器监控工具 2、打开日志开关 右边参数设置变量"log"值为"ON" 3、定位日志位置,查看日志 4、执行SQL注入语句 5、查看日志记录 /* St…

    数据库运维 2018年11月26日
    4.1K00
  • MySQL数据库服务无法启动1067问题及解决方法

    前言 小编今天碰到一个用户跟学派吧反馈说他数据库启动不了,说服务器不知道突然挂机了。服务无法启动 解决方案: 于是开启上网找答案模式,有的说把my.ini或者my.conf中的datadir路径换了,有的则是告诉我把data目录下的ibdata1、ib_logfile1、ib_logfile0等文件删除,天啊,我可没有备份,竟然让我删除ibdata1,这文件…

    2018年9月14日
    4.4K00
  • 百万数据下mysql分页问题-mysql教程-

    在开发过程中我们经常会使用分页,核心技术是使用limit进行数据的读取。在使用limit进行分页的测试过程中,得到以下数据: select * from news order by id desc limit 0,10 耗时0.003秒 select * from news order by id desc limit 10000,10 耗时0.058秒 s…

    数据库运维 2019年4月24日
    3.2K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

工作时间:周一至周五,9:30-18:30,节假日休息

添加微信
添加微信
分享本页
返回顶部