美文网首页Java 杂谈
关于SQL优化的小知识

关于SQL优化的小知识

作者: b6cd76971b2d | 来源:发表于2019-02-22 11:35 被阅读0次

负向查询不命中索引

不命中

select account from user where id not in (1,2,3);

命中

select account from user where id in (4,5,6);

前置模糊查询不命中索引

不命中

select account from user where name like '%lufei'

命中

select account from user where name like 'lu%fei%'

建议可以考虑使用 Lucene 等全文索引工具来代替频繁的模糊查询。

数据区分不明显不建议索引

对非唯一的字段,例如“性别”这种大量重复的重复值的字段,增加索引也没有什么意义。可以采用唯一账号等字段。

越小越简单的数据类型建议索引

越小越简单的数据类型通常在磁盘、内存中占用少,处理起来更快,例如整型数据比字符处理开销小,因为字符串的比较更复杂,处理非常耗时。

尽量避免null

索引字段应该制定列为NOT NULL 。含有空值得列很难进行查询优化,因为他们使得索引、索引的统计信息以及比较运算增加复杂,应该用0或者特殊值、空字符代替。

在字段上进行计算不能命中索引

索引列不能参与计算,尽量保持列“干净”。比如,FROM_UNIXTIME(create_time) = '2016-06-06' 就不能命中索引。
不命中

select account from user where FROM_UNIXTIME(create_time) = CURDATE();

命中

select account from user where create_time = FROM_UNIXTIME(CURDATE());

表表连接索引

表与表连接用于多表联合查询的约束条件的字段应当建立索引,并且进行 join 的字段两表的字段类型要相同,不然也不会命中索引。

字段类型强制转换不命中索引

不命中

select account from user where phone = 1341111111

命中

select account from user where phone = '1341111111'

如果知道是一条记录,使用limit

select account from user where phone = '1341111111' limit 1

可以提高效率,让数据库停止游标移动。

最左匹配

最左前缀匹配原则。MySQL会一直向右匹配直到遇到范围查询(>,<,BETWEEN,LIKE)就停止匹配。
如有索引(a, b, c, d),查询条件a = 1 and b = 2 and c > 3 and d = 4,则会在每个节点依次命中a、b、c,而无法命中d。(很简单:索引命中只能是相等的情况,不能是范围匹配)

个人博客

https://www.ccode.live/bertonlee/list/26

欢迎关注公众号“码上开发”,每天分享最新技术资讯

image

相关文章

  • 关于SQL优化的小知识

    负向查询不命中索引 不命中 命中 前置模糊查询不命中索引 不命中 命中 建议可以考虑使用 Lucene 等全文索引...

  • SQL优化分享

    SQL优化分享 最近公司部门内部进行了一次分享,是总工给我们进行的一次关于SQL优化的内容。相信关于SQL的优化也...

  • sql优化工具使用之explain

    关于sql优化,这个话题太大,我怕我说不好,因此本文仅以sql优化工具为题,如果对sql优化有兴趣,我建议去阅读下...

  • SQL锁优化问题

    关于SQL锁。SQL优化少不了SQL锁优化 1.SQL常见锁有:共享锁 作用于查询操作(Select) 2.排他锁...

  • MySQL优化

    昨天面试的时候,被问到有关于MySQL的优化方面的知识。回答了一些sql语句方面的优化,以及分表,对于MySQL数...

  • sql优化

    sql优化 关于sql优化,面试中经常被问道,由于本人也是小白一枚,请大家对我宽容点下面是我整理的一些sql优化措...

  • 常用sql优化2019-09-27

    sql优化 sql优化.................................................

  • Mysql-explain语句

    1、【前言】MySql优化是java程序员面试中逃避不过的知识点,而简单、优雅、高效的SQL语句是SQL优化最总要...

  • mysql数据库优化

    1. Mysql优化介绍 1.1 sql优化 a. sql优化分析b. 索引优化c. 常用sql优化d. 常用优化...

  • Mysql 优化

    1.Sql优化 1)sql优化分析2)索引优化3)sql语句优化4)一些常用的技巧优化 (正则、函数) 2.优化数...

网友评论

    本文标题:关于SQL优化的小知识

    本文链接:https://www.haomeiwen.com/subject/bwgsyqtx.html