mysql的子查询中有统计语句 我该如何优化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的子查询中有统计语句 我该如何优化相关的知识,希望对你有一定的参考价值。

子查询优化策略

对于不同类型的子查询,优化器会选择不同的策略。

1. 对于 IN、=ANY 子查询,优化器有如下策略选择:

    semijoin

    Materialization

    exists

    2. 对于 NOT IN、<>ALL 子查询,优化器有如下策略选择:

    Materialization

    exists

    3. 对于 derived 派生表,优化器有如下策略选择:

    derived_merge,将派生表合并到外部查询中(5.7 引入 );

    将派生表物化为内部临时表,再用于外部查询。

    注意:update 和 delete 语句中子查询不能使用 semijoin、materialization 优化策略

参考技术A 我是想统计所有会员发布的微博有多少条!有ts_user表和ts_weibo表;ts_weibo表中不一定存在uid(也就是说会员不一定发布过微博),但是也得统计此uid的微博数(应该为0);下面这语句能实现,但就是很慢;我建立了uid和weibo_id索引,还是很慢。大侠们,有没有更快的查询语句呢~望指教~请写出更快执行的mysql语句~谢谢~我写的查询语句如下:select u.uid,count(w.weibo_id) as w_count from ts_user as u left join ts_weibo as w on u.uid = w.uid and u.uid>0 and w.isdel=0 and type_data is not null group by u.uid order by u.ctime desc limit 0,16

Mysql 如何在某字段根据(不同产品),进行统计查询?

数据库中有图1这样字段的一张表数据表。。要求统计结果为 图2这张表。根据图1品名(查询不重复),根据不重复品名,统计相同线号下,相同品名的数量合计。不同线号、相同品名的单独统计出来。Mysql语句该如何实现?请教各位老师~

select 品名,sum(数量) 合计,线号 from 数据库表1 group by 品名,线号 参考技术A selec 品名 ,线号,sum(数量) from 表 group by 品名 ,线号
selec 品名 ,sum(数量) from 表 group by 品名

以上是关于mysql的子查询中有统计语句 我该如何优化的主要内容,如果未能解决你的问题,请参考以下文章

MySQL5.7性能优化系列——SQL语句优化——使用物化策略优化子查询

如何在 mysql 或 php 中优化或加速我的子查询

那个mysql 子查询和连接查询 一般常用哪个 谁效率高些

010 --MySQL查询优化器的局限性

优化类似的 MySQL 子查询

MySQL:子查询检查超过 14000 行的子查询优化问题