原创

BTree

mysql主要是B+ 和hash结构

更适合做范围查询 可以横向

链表

若想利用索引达到预想的提高查询速度的效果,我们在添加索引时,必须遵循以下原则

#1.最左前缀匹配原则,非常重要的原则,
create index ix_name_email on s1(name,email,)
- 最左前缀匹配:必须按照从左到右的顺序匹配
select * from s1 where name='egon'; #可以
select * from s1 where name='egon' and email='asdf'; #可以
select * from s1 where email='alex@oldboy.com'; #不可以
mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,
比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,
d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

#2.=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器
会帮你优化成索引可以识别的形式

#3.尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),
表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、
性别字段可能在大数据面前区分度就是0,那可能有人会问,这个比例有什么经验值吗?使用场景不同,
这个值也很难确定,一般需要join的字段我们都要求是0.1以上,即平均1条扫描10条记录

#4.索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’
就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,
但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。
所以语句应该写成create_time = unix_timestamp(’2014-05-29’)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 线程

    https://www.cnblogs.com/wihainan/p/4765862.html

    大学里的混子
  • Redis相关

      在主从复制的Master和Slave双方都会各自维持一个offset。Master成功发送N个字节的命令后会将Master的offset加上N,Slave在...

    大学里的混子
  • LeetCode <dfs>105&106 Construct Binary Tree

    Given preorder and inorder traversal of a tree, construct the binary tree.

    大学里的混子
  • Java环境配置以及Unity导出Android安装包apk

    • 去该网址下载 http://tools.android-studio.org/index.php/sdk/

    Aidol
  • 02.开发环境搭建

    ![Uploading image_749185.png . . .]python,是一种面向对象,解释型的计算机程序设计语言【废话】

    大牧莫邪
  • WordPress安装:零基础入门教程

    要运行 WordPress,主机空间需满足以下条件。不过现在网络上的空间基本都可以,而且还让你随意定制Php和Mysql版本,至于空间和数据库大小就更不用说了,...

    用户7261497
  • 用Keras+TensorFlow,实现ImageNet数据集日常对象的识别

    王新民 编译自 Deep Learning Sandbox博客 量子位 出品 | 公众号 QbitAI ? 在计算机视觉领域里,有3个最受欢迎且影响非常大的学术...

    量子位
  • opencv学习笔记---用numpy对图片操作,创建,修改

    也可以调用函数来取反,顺便计算一下时间,前面的要2800多ms,调用函数只需要30ms

    用户2965768
  • UML建模图实战笔记(全)

    UML:Unified Modeling Language(统一建模语言),使用UML进行建模的作用有哪些那:

    加多
  • Python 爬虫简单验证码识别和抓包

    Python知识大全

扫码关注云+社区

领取腾讯云代金券