Mysql查询减少加载时间

标签 mysql performance time load

我使用 PHP Mysql。这是我的查询,其加载时间约为 3-4 分钟。我如何才能将其加载到 1 分钟以下。

SELECT buyer.Buyer, ordr.ordr, ordr.Ship_Date, colour.Colour,
       sewing_effi.OP, sewing_effi.HEL, sewing_effi.Target, sewing_effi.TWH,
                    SUM(v_ci_input.qc_pass) AS Input,
                    SUM(sewing_input_daily.qc_pass) AS DInput,
                    SUM(sewing_output.Recieved) AS Recv,
                    SUM(sewing_output.QC_Pass) AS Toutput,
                    SUM(sewing_output_daily.QC_Pass) AS Doutput,
                    floor_line.Line,
                    floor_line.floor
            FROM  v_ci_input
            LEFT JOIN buyer
                ON  v_ci_input.Buyer=buyer.CBuyer   
            LEFT JOIN ordr
                ON  v_ci_input.Buyer=ordr.CBuyer AND
                    v_ci_input.Ordr=ordr.COrdr
            INNER JOIN colour
                ON  v_ci_input.Buyer=colour.CBuyer AND
                    v_ci_input.Ordr=colour.COrdr AND
                    v_ci_input.Colour=colour.CColour
            LEFT JOIN sewing_input_daily
                ON  v_ci_input.Barcode=sewing_input_daily.Barcode
            LEFT JOIN sewing_output_daily
                ON  v_ci_input.Barcode =sewing_output_daily.Barcode
            LEFT JOIN sewing_output
                ON  v_ci_input.Barcode = sewing_output.Barcode
            RIGHT JOIN floor_line
                ON  floor_line.Line=    v_ci_input.Line
            JOIN sewing_effi
                ON  floor_line.Line=sewing_effi.Line
            WHERE Ship_Status=0 AND floor_line.Line in('301')
              AND sewing_effi.DT=CURDATE()
            GROUP BY floor_line.Line,
                     v_ci_input.Buyer,
                     v_ci_input.Ordr,
                     v_ci_input.Colour
            ORDER BY floor_line.Line ASC"

最佳答案

第一条规则:检查您要加入的列上是否有有效且有用的索引。这是最常见的错误,通常也是最大的性能损失。重写您的查询以仅使用 LEFT JOIN,并尽可能避免 OUTER JOIN

没有详细的描述,不可能给出什么好的建议。您知道正在使用什么执行计划吗?数据的大小和分布统计是怎样的?每列的实际含义是什么以及您想对查询执行什么操作?您有多少 RAM、CPU 和磁盘是什么?数据库优化是一个庞大而复杂的话题...

关于Mysql查询减少加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46842983/

相关文章:

java - 基准测量方法拦截框架

c++ - std::copy 与 memcpy 的效率

c - sinf() 比 <math.h> 中的 sin() 快?

mysql - Rails 4 + ActiveRecord : How to merge data from 2 models?

c# - 使用模式 range/start//end/搜索 String 或 StringBuilder

c - 库调用 localtime() 在不同 Linux 平台上的行为

c++ - 在 boost 单位和持续时间之间转换

php - 如何将两列值相乘并将其写入另一列?

mysql - SQL 重复查询在 MySQL 中不起作用

mysql - 在 R 中运行 MySQL 查询,其中要搜索的值在 DF 中