6.3慢查询基础:优化数据访问《查询性能优化》

一、合理的将一个复杂查询拆分成多个简单查询

二、切分查询:

例:     定期清除大量数据时,用大的语句一次性删除,则可能需要一次锁住很多数据占满整个事务日志、耗尽系统资源阻塞很多小的但很重要查询

delete from emp where hiredate > date_sub(now(),interval 3 month);

换成:

        row_affected = 0

        do{

            row_affected = do_query("delete from emp where hiredate > date_sub(now(),interval 3 month) limit 10000")

        } while row_affected > 0

           每次删除数据后,暂停一会再做下一次删除,服务器压力分散

三、 分解关联查询:

优势:

          a. 让缓存的效率更高。许多应用程序可以方便地使用缓存单表查询对应的结果集。

          b. 将查询分解后,执行单个查询可以减少锁的竞争

          c. 在应用层做关联,更容易数据库进行拆分,更容易做到高性能和可扩展性

          d. 查询本身效率也可能会有所提升

          e. 减少冗余记录的查询。管理查询中可能需要重复地访问一部分数据。

          f. 相当于在应用中实现了哈希关联而不使用MySQL的嵌套循环关联。某些场景哈希关联的效率要高很多。

你可能感兴趣的:(6.3慢查询基础:优化数据访问《查询性能优化》)