MYSQL WORKBENCH 5.7,从查询创建表

MYSQL WORKBENCH 5.7,从查询创建表,mysql,aggregate-functions,query-performance,Mysql,Aggregate Functions,Query Performance,我一直使用MS Access,并且以前使用我的主数据表创建了汇总表(maketable query),即我的主数据包含发票上的所有销售信息,然后我创建了一个按客户划分的销售汇总表,这意味着当通过内联网页面查看时,该表中的行数更少,显示速度更快 我现在决定转到MYSQL,没有maketable命令,但我可以基于select查询创建一个名为“customersales”的表。我的主表“sales”中有100万行。这样做,需要257秒来完成,这对我来说似乎非常缓慢。结果实际上将47000条记录返回到新

我一直使用MS Access,并且以前使用我的主数据表创建了汇总表(maketable query),即我的主数据包含发票上的所有销售信息,然后我创建了一个按客户划分的销售汇总表,这意味着当通过内联网页面查看时,该表中的行数更少,显示速度更快

我现在决定转到MYSQL,没有maketable命令,但我可以基于select查询创建一个名为“customersales”的表。我的主表“sales”中有100万行。这样做,需要257秒来完成,这对我来说似乎非常缓慢。结果实际上将47000条记录返回到新表中

下面是我的CREATETABLE语句:-

创建定义器=
root
@
localhost
过程“创建销售客户”() 开始

设置SQL\u SAFE\u UPDATES=0

从salescustomer中删除

INSERT
     INTO  SALESCUSTOMER(SumOfNET, SUMOFGROSS, SumOfQTY, SUMOFSQMQUANTITY,
                SUMOFMARGIN, SumOfBUDGETNET,SumOfBUDGETMARGIN,SumOfBUDGETSQM,
                VKORG,VKBURORDER,VKGRPORDER,SALESGROUPORDER,SALESOFFICEORDER,
                CUSTOMER,NAME1,KUNN2,PARTNERNAME,PERDE,GJAHR,SALESDIRECTOR,
                SALESDIRECTORNAME,VKBUR,VKGRP,SALESGROUP,SALESOFFICE,
                STRAS,ORT02,ORT01, COUNTY,PSTLZ,TELF1,konda,kondatext
                        ) 
SELECT  Sum(SALES.NET_SALES) AS SumOfNET,Sum(SALES.NET_SALES) AS SUMOFGROSS,
        Sum(SALES.QTY) AS SumOfQTY,
        Sum(SALES.SUMOFSQMQUANTITY) AS SUMOFSQMQUANTITY,
        Sum(SALES.UKMARGIN) AS SUMOFMARGIN,
        Sum(SALES.BUDGETNET) AS SumOfBUDGETNET,
        Sum(SALES.BUDGETMARGIN) AS SumOfBUDGETMARGIN,
        Sum(SALES.BUDGETSQM) AS SumOfBUDGETSQM,
        SALES.VKORG,SALES.VKBURORDER,
        SALES.VKGRPORDER,SALES.SALESGROUPORDER,
        SALES.SALESOFFICEORDER,SALES.CUSTOMER,SALES.NAME1,SALES.KUNN2,
        SALES.PARTNERNAME,SALES.PERDE,SALES.GJAHR,SALES.SALESDIRECTOR,
        SALES.SALESDIRECTORNAME,SALES.VKBUR,SALES.VKGRP,SALES.SALESGROUP,
        SALES.SALESOFFICE,STRAS,ORT02,ORT01, COUNTY,PSTLZ,TELF1,
        konda,kondatext
    FROM  SALES
    GROUP BY  konda,kondatext,SALES.VKORG,SALES.VKBURORDER,SALES.VKGRPORDER,
        SALES.SALESGROUPORDER,SALES.SALESOFFICEORDER,SALES.CUSTOMER,
        SALES.NAME1,SALES.KUNN2,SALES.PARTNERNAME,SALES.PERDE,
        SALES.GJAHR;
有人能帮忙吗,我做错什么了吗,速度正常吗。对不起,我是MYSQL的新手

谢谢
Kevin

不要每次都从头开始重建汇总表。相反,每天(或每周、每小时或任何时候)都要增加。通常,最好使用
INSERT。。在重复密钥更新时。。选择…
。一定要有一些专栏,这样你就可以“记住你在哪里停了”

这样做的副作用是,每次不提供完整的47K行,也不删除表,使您暂时没有任何数据


更多讨论:

200K行/分钟对于在
groupby
子句中有许多列的查询来说是很慢的,但这并不过分。很多事情都会减慢MySQL查询的速度。您没有为我们提供足够的信息来帮助我们详细了解如何提高查询性能。请注意,并注意有关查询性能的部分。那么请回答您的问题。Pro提示1:在将SQL语句放入存储过程之前,先让它工作。存储过程更难调试。专业提示2:当您执行
插入到。。。。选择…
首先调试
选择
零件。在MySQL中,您可以执行
EXPLAIN-SELECT
,查询计划器将告诉您其逻辑。您还可以使用多种迁移应用程序中的任何一种,例如BullZip-