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
下一篇 2019年4月9日 下午8:56

相关推荐

  • Redis数据库有什么好处,怎么使用

    学派吧- 今天有个用户使用了Redis ,他是把数据库写入到了内存,那速度是叫一个快。但是学派吧也查了相关的材料。发现。站长朋友布置起来有点难度 今天我们不说他如何使用。只说说他的好处及弊端。1. 什么是Redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remot…

    2018年8月29日
    4.7K00
  • MySQL5.7版本sql_mode=only_full_group_by问题解决教程-网络运维

    问题: MySQL数据库迁移到MySQL5.7版本后,出现如下报错: 原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。 解决办法: 1、打开MySQL数据库控制台 执行全局sql语句: set   @@sql_mode= ‘STRICT_TRANS_TABLES,N…

    数据库运维 2018年10月17日
    3.1K00
  • mysql数据库无法启动-进行数据备份搬迁的教程

    今天看到一个案例:数据库服务无法启动,也导致了不能备份数据库、所以只能使用了笨方法、直接打包DATA目录 我们的服务器是宝塔环境、  直接备份 /www/server/data 这个目录备份 下载下来  在新的服务器上安装好环境、把data压缩包上传上去、进行解压覆盖、注意的是 版本最好一样。 重启一下数据库、 [root@VM_166_22_centos …

    2019年4月27日
    5.1K00
  • 修改mysql数据库导入sql文件大小限制

    1、打开PHP.ini。找到 upload_max_filesize memory_limit post_max_size 这三个参数! (在默认的情况下,php只允许最大的上传数据为2M,也就是2048KB,而极限的最大使用内存memory_limit也仅为128M,Post的最大也为2M) 2、按您的服务器的实际性能配置进行如下改动:(注意:以下是按我的…

    数据库运维 2018年7月12日
    3.2K00
  • mysql关于注入的防范及总结教程

    今天给大家带来一篇关于mysql数据库的注入总结教程 基础知识 什么是SQL注入 什么是Mysql MySQL手工注入 手工注入流程 判断注入点 判断查询的字段数 确定回显位 获取信息函数 获取数据库名 获取表名 获取列名 获取数据 写shell 各位大佬。。。这篇文章是个人再练习注入的时候自己总结出来的一部分经验,步骤确实很简单,百度上面确实也能搜的到相关…

    2018年10月11日
    2.7K00

发表回复

登录后才能评论
联系我们

联系我们

18838889666

在线咨询: QQ交谈

邮件:xinyun@88.com

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

添加微信
添加微信
分享本页
返回顶部
学派网官网正在升级改造中,如有影响访问,敬请谅解