Mysql查询优化

1. 添加索引遵守、最左前缀法则:

  • 如果建立的是复合索引,索引的顺序要按照建立时的顺序,即从左到右,如:a->b->c(和B+树的数据结构有关)

  • 无效索引举例:

  1. a->c: a有效i, c无效
  2. b->c: b、c 都无效
  3. c: 无效
  • 以下用法会导致索引失效:
  1. 计算,如:+、-,*、/、!=、<>、is null、 is not null、or
  2. 函数,如:sum()、round()等等
  3. 手动、自动类型转换, 如:id=“1”, 本来是数字,给写成字符串了

2. 索引不要放在范围查找的右边:

  • 比如:复合索引:a->b->c, 当where a=" " and b>10 and 3="", 这时候只能用到 a 和 b, c 用不到索引,因为在范围之后索引都会失效(和 B+树结构有关)

3. 减少select*的使用:

  • 使用覆盖索引:
    即:select 查询字段和where中使用的索引字段一致

4. like导致索引失效:

  • 失效情况:
  1. like “%张三%”
  2. like “%张三”
  • 解决方案:
  1. 使用复合索引,即like字段是select的查询字段,如:select name from table where name like “%张三%”
  2. 使用 like “张三%”

5. order by 优化:

  • 使用主键索引
  • 按照最左侧前缀法则,并使用覆盖索引排序,多个字段排序时,保持排序方向一致
  • 在SQL语句中强制制定使用某索引,force index(索引名字)
  • 不在数据库中排序,在代码层面排序
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页