Mysql 创建视图或表或创建一个条目以自动生成另一个表中的行?

Mysql 创建视图或表或创建一个条目以自动生成另一个表中的行?,mysql,view,triggers,Mysql,View,Triggers,我有一个表来存储所有的区块交易(比如每笔交易超过500000美元,可以是出价交易(直接购买),也可以是询问交易(直接销售),如上所示。我每天都要总结结果。但是由于区块交易中的数据量非常大(数十万行数据,甚至更多),我将仅使用下文预期的汇总数据 问题是当我从[View]中选择*时速度非常慢,我是否应该创建一个表来存储数据输出,因为历史数据不需要再次从BlockTrade表中查询 表:大宗贸易 代码|日期时间|价格|订单(买入=1,卖出=1)数量|金额 SQL的一部分,用于对当天同一股票的相关交易进

我有一个表来存储所有的区块交易(比如每笔交易超过500000美元,可以是出价交易(直接购买),也可以是询问交易(直接销售),如上所示。我每天都要总结结果。但是由于区块交易中的数据量非常大(数十万行数据,甚至更多),我将仅使用下文预期的汇总数据

问题是当我从[View]中选择*时速度非常慢,我是否应该创建一个表来存储数据输出,因为历史数据不需要再次从BlockTrade表中查询

表:大宗贸易

代码|日期时间|价格|订单(买入=1,卖出=1)数量|金额

SQL的一部分,用于对当天同一股票的相关交易进行求和: …->求和(订单=1,则金额为0)…->转换为结果

视图:摘要1

代码|日期|价格| TotalBuyVol | TotalBuyAmount | TotalSellVol | TotalSellAmount

按每只股票每天的价格,它会有一个总结

视图:摘要2

代码|日期| TotalBuyVol | TotalBuyAmount | TotalSellVol | TotalSellAmount | NetAmount


按每天每只股票,而不是按每种价格,汇总总的买卖量和金额。

如果您要经常访问数据,只需简单的select语句,您就可以创建视图并以更好的性能访问数据

create view summary1 as (
select CODE, date_format(DateTime,'%d/%m/%Y'), PRICE, sum(buyvol), sum(buyamount),sum(sellvol),sum(sellamount)
from BlockTrade group by CODE, date_format(DateTime,'%d/%m/%Y'), PRICE);

create view summary2 as (
select Code, date_format(DateTime,'%d/%m/%Y'), sum(buyvol), sum(buyamount),sum(sellvol),sum(sellamount), sum(price)
from BlockTrade group by CODE, date_format(DateTime,'%d/%m/%Y')
  );
您可以按如下方式访问summary1和summary2:

select * from summary1; 
select * from summary2; 

下面是我在论坛上搜索的

,发现有些人说性能不会有很大提高,因为它只是一个存储的sql语句。如果我不想再次查询视图(因为每次仍然需要运行查询,只将摘要结果存储到表中是否好?)因为区块交易表每天都会更新。创建汇总后,我不需要查询区块交易表。我只需要汇总表进行计算。数据库中有1700只股票。是的,我同意。你看不到性能上的巨大差异。使用视图的另一个原因是方便和安全。你可以找到n关于视图和select语句的文章数量。但是我看到你的数量非常少。Mysql能够以比你想象的更快的速度在数百万条记录上进行复杂的连接,如果你完美地使用索引和分区之类的概念。你能帮我如何在表中创建行插入,比如“TxSummary”吗从select语句“select Code,datE_format…”中获得的结果。我将每天自动运行它。然后我可以快速从汇总表中检索。谢谢。它与通常的insert语句一样简单(您还可以在select语句中包含where条件以进行筛选,例如,日期特定数据)“插入TxSummary(代码,日期时间)从BlockTrade中选择代码,日期时间;”sql FIDLE链接: