www.ypnh.net > 帮忙优化一个mysql子查询,数据多就很慢,谢谢

帮忙优化一个mysql子查询,数据多就很慢,谢谢

select sum(value1) as sum1,sum(value2) as sum2,recdate from table1 where recdate = (select max(recdate) as max from table1) group by recdate

首先要看你这个hmyl_customer_service 表索引和主键,还有你这个语句看着太别扭,怎么会出现这么多*号,你要是获取字段,直接写字段不就好了吗? 为啥全表字段都要,比如select adddate from (select adddate from hmyl_customer_service where ...

如果列比较多的话,建议别用*, 你这种最适合with as这种临时表 , 使用子查询的方法表被扫描了多次,而使用WITH Clause方法,表仅被扫描一次。这样可以大大的提高数据分析和查询的效率。

是这样的你左边的那个表有近10w数据了。 想快的话就再加一个条件,r.TS_CALL_ID = ??查询值,这样就快了。 因为你现在是全表关联的,index意义不大

使用连接(JOIN)来代替子查询(子查询) 选择最合适的字段属性 使用联合(UNION),以取代临时表 使用手动创建使用事务外键索引使用 避免使用会非常优化来优化查询

优化总结: 1.任何情况下SELECT COUNT(*) FROM xxx 是最优选择; 2.尽量减少SELECT COUNT(*) FROM xxx WHERE COL = ‘xxx’ 这种查询; 3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL = ‘xxx’ 的出现。(其中COL非主键) 环境: MySQL版本:5.0...

select id,name,age,sex,punch1from test0where id in --等号改成in(select id from test1where flag = 0 );

连接查询的优点是可以用尽可能少的SQL进行查询。简化了应用和数据库之间的IO调用。 缺点是如果表设计不好,SQL写得差,会造成数据库大量的内部IO操作,特别是大量没必要的全表扫描。使用这种方式必须要么是确实要读取的数据量非常大,要么是能够...

mysql的功能问题 mysql不支持对同一个表查询后做修改(update、delete)操作 update score set 姓名='王五' where 总分=(select score from (select min(总分) as score from score) as a); 制定个新表名就可以了

并不能一概而论,子查询和分次查询的效率只有在做过分析之后才能说那种效率高。效率不单单和SQL语句有关,还和你的表结构,索引,以及存储引擎有关系。

网站地图

All rights reserved Powered by www.ypnh.net

copyright ©right 2010-2021。
www.ypnh.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com