zoukankan      html  css  js  c++  java
  • mysql查询优化方案

    mysql查询优化方案

    • 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引
    • in ,not in会全表扫描
    • 模糊查询也会全表扫描:select id from t where name like '%abc%'
    • 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引

    limit结合order by查询优化

    • 慢查询示例
    select * from table where deleted_at = ? and owner_id = ? order by status, id desc limit ?
    
    • 优化查询示例
    select * from table no1 join(select id from table where deleted_at = ? and owner_id = ? order by status, id desc )  no2 on no1.id=no2.id limit ?;
    
    • 对比分析

    使用上面这种写法的原因:原始的“select * from table where deleted_at = ? and owner_id = ? order by status, id desc limit ?” 会先读索引,再读数据,然后抛弃不需要的数据;而第二种写法只读索引,使用了主键索引,然后根据索引读取需要的列,效率更高

  • 相关阅读:
    PTA|基础编程题目集|7-8
    PTA|基础编程题目集|7-7
    PTA|基础编程题目集|7-11
    PTA|基础编程题目集|7-3
    PTA|基础编程题目集|7-2
    PTA|基础编程题目集|7-1
    PTA|基础编程题目集|7-5
    PTA|基础编程题目集|7-6
    scrapy-redis使用以及剖析
    Python数据库连接池DBUtils
  • 原文地址:https://www.cnblogs.com/javallh/p/12859627.html
Copyright © 2011-2022 走看看