首页 > 社交 > 科普中国

面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

常驻编辑 科普中国 2022-06-22 字段   路由   详解   索引   事务   版本   操作   数据库   引擎   数据   日志
= 9 order by id asc limit 190289,10 ) b
where a.id = b.id
  • 书签方式书签方式就是找到limit第一个参数对应的主键值,根据这个主键值再去过滤并limit例如:
  •   select * from table where id >
      (select * from table where type = 2 and level = 9 order by id asc limit 190
    

    索引优化

    合理地设计和使用索引,是优化慢SQL的利器。70s拜客生活常识网

    利用覆盖索引70s拜客生活常识网

    InnoDB使用非主键索引查询数据时会回表,但是如果索引的叶节点中已经包含要查询的字段,那它没有必要再回表查询了,这就叫覆盖索引70s拜客生活常识网

    例如对于如下查询:70s拜客生活常识网

    select name from test where city='上海'
    

    我们将被查询的字段建立到联合索引中,这样查询结果就可以直接从索引中获取70s拜客生活常识网

    alter table test add index idx_city_name (city, name);
    

    低版本避免使用or查询70s拜客生活常识网

    在 MySQL 5.0 之前的版本要尽量避免使用 or 查询,可以使用 union 或者子查询来替代,因为早期的 MySQL 版本使用 or 查询可能会导致索引失效,高版本引入了索引合并,解决了这个问题。70s拜客生活常识网

    避免使用 != 或者 <> 操作符70s拜客生活常识网

    SQL中,不等于操作符会导致查询引擎放弃查询索引,引起全表扫描,即使比较的字段上有索引70s拜客生活常识网

    解决方法:通过把不等于操作符改成or,可以使用索引,避免全表扫描70s拜客生活常识网

    例如,把column<>’aaa’,改成column>’aaa’ or column<’aaa’,就可以使用索引了70s拜客生活常识网

    适当使用前缀索引70s拜客生活常识网

    适当地使用前缀所云,可以降低索引的空间占用,提高索引的查询效率。70s拜客生活常识网

    相关阅读:

  • 字段类型有哪些(字段长度怎么设置)
  • 技术人必备的接口测试神器:apifox、apipost、yapi,实用
  • 我做开发测试犯的错
  • 基于SpringBoot微服务开发中的异常处理最佳实践
  • MySQL专题1:
  • 你今天玩游戏了吗?游戏道具了解下
  • 什么是CSRF
  • 最全SQL
  • 云原生(十四)
  • MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。