mysql workbench 5.7,从查询创建表

bjp0bcyl  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(478)

我一直使用ms access,以前使用我的主数据表创建了摘要表(maketable query),即我的主数据包含发票上的所有销售信息,然后我创建了一个按客户列出的销售摘要表,这意味着当通过intranet页面查看时,该表中的行数更少,显示速度更快。
我现在决定转移到mysql,没有maketable命令,但是我可以基于select查询创建一个名为“customersales”的表。在我的主表“sales”中有100万行。这样做,需要257秒来完成这对我来说似乎非常缓慢。结果实际上将47000条记录返回到新表中
下面是我的创建表statement:-
创建定义者= 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的新手
谢谢凯文

aiqt4smr

aiqt4smr1#

不要每次都从头开始重建摘要表。相反,每天(或每周或每小时)都要增加。通常这是最好的办法 INSERT .. ON DUPLICATE KEY UPDATE .. SELECT ... . 一定要有一些专栏,这样你就可以“记住你从哪里停下来了”。
这样做的副作用是每次不传递完整的47k行,并且不删除表,使您暂时没有任何数据。
更多讨论:http://mysql.rjweb.org/doc.php/summarytables

相关问题