栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

规避这些坑,能让你在查询数据库时更快

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

规避这些坑,能让你在查询数据库时更快

一、索引

在数据库中,对于查询操作比较频繁的表,可以使用索引,索引又分为主键索引和非主键索引(有人也分为聚簇索引和非聚簇索引),我们先来看看主键索引是如何提高查询性能的。

1.1聚簇索引

索引经历了几个阶段,第一个阶段使用的是二叉树,将数据直接存储在各个节点上,虽然相对一般查询来说也提高了效率,但是由于层级太高,查询和维护的时候都比较麻烦;第二阶段是B-数,此时也是将数据存储在各个节点上,虽然提高了维护效率,但是加载全部的信息还是需要不少的时间;第三阶段是B+数,该阶段将索引存储到B+树上,非叶子节点不存储数据,叶子节点也不存储数据,存储的是数据的地址,这样便大大提高了查询效率。


MySQL5.5之后使用的InnoDB引擎实现索引的原理就是B+树,这就是主键索引查询快的原因。

1.2非主键索引

非主键索引查询的时候采用的也是B+树,不同的是叶子节点存储的是主键索引的值,MySQL会根据主键索引又使用主键索引查询方式进行查询。这也叫回表查询。

所以索引查询那么快,我们在对数据进行频繁的查询时一定要使用,但有的操作会直接导致索引时效比如下面:

二、索引时效的场景 2.1 联合索引不满足最左匹配原则

在联合索引中,查询语句必须要以联合索引最左边的字段开始进行查询,不满足该条件则索引会失效。
比如使用联合查询(A,B,C),符合最左匹配原则的为:

  • A+B+C
  • A+B
  • A+C
  • A
    不符合最左匹配原则的为:
  • B
  • C
  • B+C
  • C+B
2.2使用错误的模糊查询

比如查询姓名为"张小三"的信息,正确使用方式为:

  • 字段名 like 张%
    索引失效的查询为:
  • 字段名 like %三
  • 字段名 like %小%
2.3 使用列运算操作

查询时使用(±*/)操作都会使索引失效

2.4 对列使用了函数 2.5使用了 is not null 2.6查询的列使用了隐式转换

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号