美文网首页
后端存储9(mysql索引)

后端存储9(mysql索引)

作者: 兮兮码字的地方 | 来源:发表于2020-10-04 11:11 被阅读0次

    怎么能避免写出慢SQL

    慢sql的量化指标

    一台 MySQL 数据库,大致处理能力的极限是,每秒一万条左右的简单 SQL,这里的“简单 SQL”,指的是类似于主键查询这种不需要遍历很多条记录的 SQL。

    1,实际上,一般一台 MySQL 服务器,平均每秒钟执行的 SQL 数量在几百左右,就已经是非常繁忙了,即使看起来 CPU 利用率和磁盘繁忙程度没那么高,也需要考虑给数据库“减负”了。,

    2,编写一条查询语句的时候,可以依据查询数据表的数据总量,估算一下这条查询大致需要遍历多少行数据。如果遍历行数在百万以内的,只要不是每秒钟都要执行几十上百次的频繁查询,可以认为是安全的。

    1,使用索引避免全表扫描

    2,分析 SQL 执行计划

    SQL 语句前面加上 EXPLAIN 关键字

    rows 的含义就是,MySQL 预估执行这个 SQL 可能会遍历的数据行数。第一个 SQL 遍历了四千多行,这就是整个 User 表的数据条数;第二个 SQL 只有 8 行,这 8 行其实就是符合条件的 8 条记录。

    type 这一列,这一列表示这个查询的访问类型。ALL 代表全表扫描,这是最差的情况。range 代表使用了索引,在索引中进行范围查找,因为第二个 SQL 语句的 WHERE 中有一个 LIKE 的查询条件。如果直接命中索引,type 这一列显示的是 index。如果使用了索引,可以在 key 这一列中看到,实际上使用了哪个索引。低效的 LIKE 查询条件仍然可以用到索引的范围查找,遍历数据的行数远远少于第一个 SQL,查询性能更好。

    相关文章

      网友评论

          本文标题:后端存储9(mysql索引)

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