查询性能优化流程:

1.分析原因:为什么会慢?(慢查询日志,简单的衡量指标:相应时间扫描行数返回行数、扫描行数/返回行数:1/1-1/10较好)

    数据访问:

            a.确认应用程序是否在检索大量超过需要的数据。这通常意味着访问了太多的行,但有时候也可能访问了太多的列。

            b.确认MySQL服务器层是否存在大量超过需要的数据行。

2.重构查询方式:

            a.一个复杂查询还是多个简单查询

            b.切分查询

            c.分解关联查询(优势:>让缓存的效率更高。

                                                >将查询分解后,执行打个查询减少锁的竞争

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

                                                >查询本身效率也可能会有所提升。

                                                >可以减少冗余记录的查询。

                                                >更进一步,这样做相当于在应用中实现了哈希关联,而不是使用MySQL的嵌套循环关联。)



查询执行路径图:

            《高性能Mysql》

tips:

   MySQL通常会先把结果写入临时表(结果集),然后再将临时表的数据返回给客户端(应该是考虑到缓存的使用),而不会直接将结果返回给客户端。

一个查询语句的解析顺序:

    where>group by >order by>fields

test:

    SET @rownum = 0;
    SELECT id, tel, `name`, (@rownum:[email protected]+1) as cnt from `user` 
    WHERE @rownum<1
    GROUP BY tel

    ORDER BY `name`, (@rownum := @rownum*1)


使用MySQL构建一个队列:

《高性能Mysql》




相关文章: