我正在对MySQL数据库进行“ select sum(foo)from
bar”查询,该数据库总计7.3mm记录,每次运行大约需要22秒。在MySQL中有加快总和的技巧吗?
不,您不能加快功能本身。问题实际上是您要选择730万条记录。MySQL必须扫描整个表,而730万是一个很大的数字。实际上,它完成得如此之快给我留下了深刻的印象。
您可以采用的策略是将数据分成较小的子集(也许按日期?月?),并为不会改变的旧数据保持总计。您可以定期更新总和,可以通过将总和以及此后添加的任何新数据相加来计算总值,这将减少很多行。
问题内容: 我有一个“小时”列,我有一个“种类”列(可以是1,2或3) 我想做类似的事情: 要么 但是mysql告诉我我有一个错误…什么是错误! 请参见以下stackoverflow主题:MySQL SUM IF字段b =字段a ..我无法回复此邮件… 问题答案: 您可以使用以下语句:
问题内容: 出于说明目的,假设您正在使用带有三列的简单MySQL“ books”表运行一个库: (ID,标题,状态) id 是主键 书名 是书的标题 status 可以是描述书籍当前状态的枚举(例如,Available,Checkedout,Processing,MISSING) 一个简单的查询来报告每种状态下有多少本书: 或专门查找有多少本书: 但是,一旦表增长到数百万行,这些查询将花费几秒钟来
问题内容: 我的桌子: 我需要使用,按ID分组来更新字段: 对于ID 1,应为 对于ID 2,应为 预期输出: 我该如何看重? 我的代码: 这是行不通的。 问题答案: 不幸的是,您无法在中更新与其自身联接的表。 您需要创建一个函数作为解决方法:
问题内容: 我想知道与MySQL中一样的TOP关键字的替代方法。我已经阅读了有关SQL Server中的TOP的信息。 在MySQL中,是否还有其他替代方法,或者在MySQL中,我们可以从中获得相同功能的任何其他方法? 问题答案: 排序和限制结果:
问题内容: 假设我有这张桌子 我想返回第一行,其中所有先前现金的总和大于某个值: 因此,例如,如果我要返回第一行,其中所有先前现金的总和都大于500,则应返回到第3行 如何使用mysql语句执行此操作? 使用 不起作用 问题答案: 您只能在HAVING子句中使用聚合进行比较: 该子句要求您定义GROUP BY子句。 要获得第一行,其中所有先前现金的总和都大于某个值,请使用: 由于聚合函数发生在子查