相关疑难解决方法(0)

在MySQL中创建累积和列

我有一个看起来像这样的表:

id   count
1    100
2    50
3    10
Run Code Online (Sandbox Code Playgroud)

我想添加一个名为cumulative_sum的新列,因此表格如下所示:

id   count  cumulative_sum
1    100    100
2    50     150
3    10     160
Run Code Online (Sandbox Code Playgroud)

是否有可以轻松完成此操作的MySQL更新语句?实现这一目标的最佳方法是什么?

mysql sql running-total

69
推荐指数
3
解决办法
10万
查看次数

从性能角度来看,将MySQL临时表用于高度使用的网站功能的效率如何?

我正在尝试为网站编写搜索功能,我已经决定使用MySQL临时表来处理数据输入的方法,通过以下查询:

CREATE TEMPORARY TABLE `patternmatch`
  (`pattern` VARCHAR(".strlen($queryLengthHere)."))

INSERT INTO `patternmatch` VALUES ".$someValues
Run Code Online (Sandbox Code Playgroud)

$someValues具有布局的一组数据在哪里('some', 'search', 'query')- 或者基本上是用户搜索的数据.然后我images根据表中的数据搜索我的主表,patternmatch如下所示:

SELECT images.* FROM images JOIN patternmatch ON (images.name LIKE patternmatch.pattern)
Run Code Online (Sandbox Code Playgroud)

然后我根据每个结果与输入匹配的程度应用启发式或评分系统,并通过启发式等显示结果.

我想知道创建临时表需要多少开销?我知道它们只存在于会话中,并在会话结束后立即被删除,但如果我每秒有数十万次搜索,我会遇到什么样的性能问题?有没有更好的方法来实现搜索功能?

php mysql performance temp-tables database-performance

10
推荐指数
1
解决办法
1586
查看次数

在MySQL中获取累积和的最佳查询

在MySQL中获取累积总和的"正确"查询是什么?

我有一个表格,我保存有关文件的信息,一列列表包含文件的大小(以字节为单位).(实际文件保存在某处的磁盘上)

我想得到这样的累积文件大小:

+------------+---------+--------+----------------+
| fileInfoId | groupId | size   | cumulativeSize |
+------------+---------+--------+----------------+
|          1 |       1 | 522120 |         522120 |
|          2 |       2 | 316042 |         316042 |
|          4 |       2 | 711084 |        1027126 |
|          5 |       2 | 697002 |        1724128 |
|          6 |       2 | 663425 |        2387553 |
|          7 |       2 | 739553 |        3127106 |
|          8 |       2 | 700938 |        3828044 |
|          9 | …
Run Code Online (Sandbox Code Playgroud)

mysql sql query-optimization

8
推荐指数
1
解决办法
8898
查看次数

如何组合2个SQL查询并检索累积计数?

我正在尝试检索特定A/B测试组合每天的访问次数和转化次数.每种组合代表A/B测试的不同变化.在这里,我只使用'1''2'代表变化,但从技术上讲,可能会有更多的变化.

我写了以下2个查询,它们独立工作.是否可以组合这些或写一个检索我想要的数据的查询?

访问查询:

SELECT DATE(visit.created), visit.combination, COUNT(visit.id) 
FROM visit 
WHERE visit.user_id = 6
AND visit.experiment_id = 1
GROUP BY DATE(visit.created), visit.combination
Run Code Online (Sandbox Code Playgroud)

访问结果:

在此输入图像描述

转化查询:

SELECT DATE(conversion.created), conversion.combination, COUNT(conversion.id) 
FROM conversion 
WHERE conversion.user_id = 6
AND conversion.experiment_id = 1
AND conversion.goal_id = 1
GROUP BY DATE(conversion.created), conversion.combination
Run Code Online (Sandbox Code Playgroud)

转化结果:

转换结果

如果我可以检索一个正在运行的总计(累计)计数,如下所示,请查看最后两列.我已经按照组合对下表进行了分组,因此累积计数更容易理解:

+---------------+-------------+----------------------+-----------------+--------------+--------------+
| DATE(created) | combination | COUNT(conversion.id) | COUNT(visit.id) | cumulative_c | cumulative_v |
+---------------+-------------+----------------------+-----------------+--------------+--------------+
| 2015-11-17    | 1           |                    1 |               3 |            1 |            3 |
| …
Run Code Online (Sandbox Code Playgroud)

mysql sql

7
推荐指数
1
解决办法
101
查看次数

MySQL按月累计运行总计

可能重复:
计算MySQL中的运行总计

我正在使用MySQL和PHP监控自2011年以来在应用程序中创建的用户数量.作为查询的一部分,我还想包括一个运行总计.

SELECT
  DATE_FORMAT(created,'%Y%m%d') as 'Date',
  COUNT(item_id) as 'NewUsers'
FROM AP_user
WHERE YEAR(created) > 2011
  AND user_groups = '63655'
  AND user_active = 1
  AND userID NOT IN $excludedUsers
GROUP BY MONTH(created) ASC
Run Code Online (Sandbox Code Playgroud)

我能够按月返回"用户",但如何将运行总计作为此查询的一部分?

mysql

5
推荐指数
1
解决办法
4762
查看次数