`
西蜀石兰
  • 浏览: 118984 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于group by的使用

 
阅读更多
今天同事在使用mysql时,数据量只有50万,查询时间竟然是7秒,好奇之下要了sql语句自己拿过来研究。最后发现问题出在了group by之上。
第一种情况:group by a,如果有100条数据,那么需要比较的次数最多是(1+2+3+4+...+99)姑且算5000吧,
第二种情况:group by a,b,需要比较的次数应该是5000+100*100,也就是说,程序先执行完毕group by a,然后拿100条数据和每一条已经出来的结果比较。这是我能想到的最差的算法了,可是即便如此,需要的时间也应该最多是第一种情况的三倍。

可是实际的情况,第二种需要的时间是第一种的10倍甚至更多。

挖个坑,留着自己以后填。
--2015-10-19更新--
事后解决了这个问题,数据存储结构可以大大优化查询速度。
如果按照group by的需求对数据进行存储,那么在过数据的时候,仅仅需要过部分数据,使得查询时间从7秒减为1秒以内
分享到:
评论

相关推荐

    group by + order by

    ### Group By 和 Order By 的使用方法及组合应用 在数据库查询语言 SQL(Structured Query Language)中,`GROUP BY` 和 `ORDER BY` 是两个非常重要的子句,它们可以帮助我们更高效地管理和展示数据。 #### GROUP ...

    SQL中GROUP BY的用法

    在使用 GROUP BY 语句时,需要注意错误的处理,例如 NOT A GROUP BY EXPRESSION 的错误,可以通过使用聚合函数来解决。 GROUP BY 语句是 SQL 中的一种强大工具,经常与聚合函数一起使用,用于对数据进行分组和计算...

    mysql使用GROUP BY分组实现取前N条记录的方法

    本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...

    MySQL数据库中group by语句与update语句的用法研究.pdf

    * 在使用 group by 子句时,select 子句中的任意一列要么包含在聚合函数中,要么必须在 group by 子句中出现过。 例如,从 teacher 表中查询各个系男、女教师的人数,可以使用以下语句: select dname, tsex, ...

    group by后使用rollup子句总结

    「GROUP BY 与 ROLLUP 子句的使用」 `GROUP BY` 语句是 SQL 中一种常用的语句,用来对查询结果进行分组并进行聚合操作。但是,如果我们想要对分组结果进行汇总统计时,使用 `ROLLUP` 子句可以实现这一功能。 ...

    简单讲解sql语句中的group by的使用方法

    下面我们将详细讨论`GROUP BY`的使用方法及其相关知识点。 1. **`GROUP BY`的基本概念** `GROUP BY`关键字用于将数据表中的数据根据一个或多个列的值进行分组。通过分组,你可以对每个组应用聚合函数,这有助于...

    group by 后 使用 rollup 子句 总结.doc

    ### Group By 后使用 Rollup 子句的理解与应用 #### 一、Rollup 子句的基本概念 在 SQL 查询语言中,`GROUP BY` 语句被广泛应用于对数据进行分组处理,以便能够更好地汇总和分析数据。而在 `GROUP BY` 语句后加上 ...

    sqlserver+group by分组查询分页存储过程

    例如,如果我们有一个销售记录表,并希望按产品类别统计每种产品的总销售额,我们可以在`SELECT`语句中使用`SUM(SalesAmount)`并结合`GROUP BY ProductCategory`来实现这一目标。 ### 存储过程在SQL Server中的应用...

    Flink之 group by

    1、 如果使用 groupby table转换为流的时候只能用toRetractDstream val rDstream: DataStream[(Boolean, (String, Long))] = table.toRetractStream[(String,Long)] 2、 toRetractDstream 得到的第一个boolean型...

    group by的详解

    2. **别名的使用**:在`GROUP BY`子句中,不能直接使用选择列表中的别名,而应使用原始列名或表达式。在这个例子中,`GROUP BY`中使用了`extract(YEAR FROM t.dateordered)`和`extract(MONTH FROM t.dateordered)`,...

    使用Group by分组统计.rar

    下面我们将深入探讨`GROUP BY`语句的使用方法及其相关知识点。 首先,`GROUP BY`语句的基本结构是这样的: ```sql SELECT column1, column2, ..., aggregate_function(column_name) FROM table_name WHERE ...

    order by 、group by 、having的用法

    - 当使用 `GROUP BY` 时,`SELECT` 语句中未包含在聚合函数内的列必须出现在 `GROUP BY` 子句中。例如,`SELECT department, COUNT(employee) FROM employees GROUP BY department` 会返回每个部门的员工数量。 - ...

    Linq中GroupBy方法的使用总结.

    Linq中GroupBy方法的使用总结 Linq 中的 GroupBy 方法是对数据进行分组的操作,通常用于对一个或多个字段进行分组,求其总和、均值等。下面我们来详细介绍 Linq 中 GroupBy 方法的使用。 一、基本使用 在 Linq 中...

    清晰解读GroupBy

    通常情况下,`GROUP BY`会与聚合函数一起使用,如`COUNT()`、`SUM()`、`AVG()`等,以便对每个分组的数据进行统计或计算。 #### 二、`GROUP BY`的工作流程 以给定的部分内容为例,假设我们有一个名为`test`的表,...

    group by用法.doc

    `GROUP BY` 语句是SQL中用于对数据进行分组的重要工具,通常与聚合函数如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等一起使用。其基本概念是根据一个或多个列的值将数据分为不同的组,然后对每个组应用聚合函数以得出每...

    Group_by详解_完美例句

    例如,如果你有一个包含水果信息的表格,包括水果名称(FruitName)、产地(ProductPlace)和价格(Price),你可以使用`GROUP BY`语句来根据产地分组,以便计算每个产地的水果种类数量。 ### 2. `GROUP BY`的使用 ...

    在SQL语言中用Group By子句实现除法.pdf

    当与Select语句结合使用时,Group By子句经常用于数据分析和报告生成。 尽管Group By子句能够进行各类聚合操作,但它在处理除法运算时稍显复杂。这是因为除法通常涉及将一组值与另一组值相关联。在SQL中,为了实现...

    Sql聚合函数和group by的关系详解.doc

    例如,在使用 group by 子句时,select 语句只能使用聚合函数和 group by 引用的字段,否则会报错。例如,如果我们使用 group by 语句将国家按照大洲进行分组,则 select 语句只能使用聚合函数和 continent 字段,...

Global site tag (gtag.js) - Google Analytics