Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将大型数据库表折叠为每个用户一行_Mysql_Sql_Database - Fatal编程技术网

Mysql 将大型数据库表折叠为每个用户一行

Mysql 将大型数据库表折叠为每个用户一行,mysql,sql,database,Mysql,Sql,Database,我正在运行一个赌场而不是真正的金钱网站,每次用户玩一行都会在我的数据库上的一个表上生成,这使得这个数据库增长太快,这会使我的服务器崩溃 这是表结构 Name Type Collation Attributes Null Default Extra Action 1 user_id int(11) No None Change C

我正在运行一个赌场而不是真正的金钱网站,每次用户玩一行都会在我的数据库上的一个表上生成,这使得这个数据库增长太快,这会使我的服务器崩溃

这是表结构

    Name        Type            Collation   Attributes          Null    Default     Extra       Action
 1  user_id     int(11)         No          None                Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
 2  amount      decimal(16,8)   No          None                Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
 3  aff         int(11)         No          0                   Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
 4  jackpot     int(11)         No          0                   Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
 5  paidout     int(11)         No          0                   Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
 6  type        int(11)         No          0                   Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
 7  created     timestamp       No          CURRENT_TIMESTAMP   Change  Change      Drop Drop    Browse distinct values Browse distinct values   Primary Primary     Unique Unique  Show more actions More
这个表实际上有大约400万行,只有30000个用户id 我的问题是,有没有一种方法可以将表折叠起来,比如说每天,每个用户只保存一行,并保持他们的余额

我正在尝试这一点,但没有成功:

更新trans

按用户id从trans group中选择*
设置金额=从trans选择sumamount

以下是一些主要步骤:

创建一个新的汇总表。 在原始表上添加触发器以查找此用户,并将金额添加到汇总表中的总计中 清除某个时间表上的所有旧条目 或

更改应用程序逻辑以执行更新而不是插入 或


您可以编写一个“按样式分组”查询,将所有用户信息相加并返回,而不是返回所有详细信息-可能您正在做的是选择*,这将耗尽您的所有内存。。糟糕的

问题是为什么会是现在这样?你能显示show CREATE TABLE输出吗?如果这是我们谈论的真实货币,我真的认为你不会想删除任何关于交易的信息。这不是真实货币,show CREATE TABLE输出是什么?sql语句的输出show CREATE TABLE yourTableName在你选择的mysql客户机中,即mysql命令行客户端。Table Create Table trans Create Table trans user_id int11不为空,amount decimal16,8不为空,aff int11不为空默认值“0”,jackpot int11不为空默认值“0”,paidout int11不为空默认值“0”,键入int11不为空默认值“0”,created timestamp NOT NULL DEFAULT CURRENT_timestamp ENGINE=InnoDB DEFAULT CHARSET=latin1I我不想装箱一个新表我只想按用户id对这数百万行进行分组,并将其金额相加以保持最终余额。然后按查询写入分组。