当前位置:数据库 > MySQL >>

mysql查询语句优化,求助

问题就不简化了,直接拿出来问大家吧,请帮忙想想办法。 method start time: 1326692813.2524 countSql: SELECT DATE(time_new) AS date FROM `site_data` WHERE `time_new`>=? AND `time_new`<? GROUP BY date , pub, pla, site countSql query start time: 1326692813.2559 countSql query end time: 1326692827.0414 totalCount: 4036 sql: SELECT DATE(time_new) AS date , pub, pla, site, SUM(landing) AS landing, SUM(basic_reg) AS basic_reg, SUM(morecredit) AS more_credit, SUM(basic_reg_coreg) AS basic_reg_coreg, SUM(full_reg) AS full_reg, SUM(full_reg_coreg) AS full_reg_coreg, SUM(profiling_coreg_start) AS profiling_coreg_start, SUM(profiling_coreg_end) AS profiling_coreg_end, SUM(confirmed) AS confirmed, SUM(confirmed_coreg) AS confirmed_coreg, SUM(daily_coreg) AS daily_coreg, SUM(homeview) AS home_view, SUM(won) AS won, SUM(credit) AS credit, SUM(token) AS token, SUM(free) AS free, SUM(landing) AS click, SUM(reward) AS reward, SUM(played) AS played FROM `site_data` WHERE `time_new`>=? AND `time_new`<? GROUP BY date , pub, pla, site LIMIT 0, 50 sql start time: 1326692827.0427 sql end time: 1326692841.3678 method end time: 1326692841.3681 上面贴出来的是一个查询的测试,因为数据量大,我认为主要是在group by和sum的时候开销比较大。如果换一个日期或再加几个group by(加的group by的字段也要select sum()出来的),通过php网页访问的话就总是连接被重置(只在model层就出不来了,都还没有到view页面)。以上这样的sql该怎么优化,谢谢!
补充:上面两个sql是同一个操作里的,数据量大,就做的分页。先取一下总的记录数,然后取当前页的记录。
追问:就是说对time_new的几个函数和约束,占用了一部分开销是吗?我也觉得不知道要怎么改好了,语句就这么简单,也没有什么可以改成在程序里处理的,哎,愁死了是啊!!!  客户花样死多的,我说加些索引,噼里啪啦说我一大堆,真是没办法。
答案:是可以优化的,前提是:编程高手+源代码齐全,否则不可能实现。

最简单的优化,就是删除历史数据和拆分:删除历史数据、多余数据,是最有效的,另外一个大库拆成几个小库也是不错的效果。
其他:感觉查询语句不复杂,没什么可以优化的。但是由于记录数太大,需要考虑在字段time_new上加上索引。如果表没有索引,为了筛选记录,会全表扫描。时间肯定是大量的。 eeeeeeeeeee 请表述下你要查询的内容与表结构!~ 您好,如果在线的话,的确应该把这个问题说清楚一些。把表的字段及长度等信息说明白一些。好让我们有明确的信息。这样才可以帮到您的。

上一个:数据库 mysqldump 备份sql文件 恢复后 少表 怎么办?
下一个:MYSQL数据库导入.sql文件问题:.sql文件如下

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,