mysql 建立多个索引,加快查询速度

时间:2023-01-09 14:26:29

最近有一个接口,客户端接到数据,耗时1秒,一般的常识是 100ms以内

在接口通过exit,断点,一个一个的尝试,发现问题出在一个myqsl查询上

在mysql里用sql查询了一下,发现是0.64s,请龙哥帮忙看了一下,他的建议是建立多个索引,加快查询速度。


案例1:

  • 一. 获取查询情况  explain  sql语句龙哥,发现没有索引

  • 二.查询是否可以建立索引,即判断是否是唯一的 UNIQUE 索引

  • 用 count('*')    group 这个字段,发现没有大于1的,说明了这个字段是唯一的

  • 三.增加 columnname为索引ALTER TABLE `tablename` ADD UNIQUE (`columnname`)在增加完后,继续查询发现,0.00s,速度真的快了补充,后来我在加查询的地方,又加了一个limit 1 ,养成好的查询习惯


案例2:

  • 一. 来一个复杂的 2个join 2个where 1个order by 的混合查询  发现用时 4s龙哥继续explain sql语句 发现从row是里,有一个35万行的查询,他的建议是建立索引

  • 二.发现这个columnname列不是唯一的,于是建一个普通的索引 index索引ALTER TABLE `tablename` ADD INDEX (`columnname`)

  • 三.继续explain 发现只有 41行了,看一下时间,用时变成 0.6s了

  • 四.龙哥针对 inner  join 优化,改为了  left join 结果用时变成 0.0s了