我已经使用了一些数据库Phpmyadmin
。我之前可以很好地运行它,但是在我尝试一些复杂的查询之后它运行得很慢。
我必须等待大约5分钟才能得到计数结果。但对于简单的查询,它运行良好。 为什么会这样?我可以解决这个问题吗?
我该怎么做?
SELECT X.id,X.Line,X.Model,X.Lot_no,X.Lot_Quantity,
X.Merchandise AS Merchandise,
X.Merchandise-X.Lot_Quantity AS Balance
FROM(
SELECT A.Inspection_datetime,A.id,A.Line, A.Model,
A.Lot_no,B.Lot_Quantity,
IF(RIGHT(A.Range_sampling,4)='0000',10000,
RIGHT(A.Range_sampling,4))-MID(Range_sampling,5,4)+1
AS Merchandise
FROM inspection_report A
LEFT JOIN prod_sch B
ON A.Line= B.Line_Name AND A.Model = B.Model_Code
AND A.Lot_no= CONCAT(LPAD(CAST(B.Lot_No_ AS CHAR),3,'0'),'A')
WHERE MONTH(A.Inspection_datetime) = MONTH(CURRENT_DATE)
AND YEAR(A.Inspection_datetime) = YEAR(CURRENT_DATE)
GROUP BY A.Line, A.Model,A.Range_sampling) X
GROUP BY X.Model
答案 0 :(得分:1)
您的查询是否包含multiple join
和许多where condition
?那么你必须在ON
和WHERE
子句中使用的所选属性上创建索引。
BTW ...显示您的表格结构以及您的查询...然后可以提供更好的解决方案
对表格中的以下属性索引
线,模型,Lot_no,Inspection_datetime,range_sampling( 表:insepection_report) Line_Name,Model_code(表:prod_sch )
注意:强>
在SELECT之前尝试使用EXPLAIN并查看结果
答案 1 :(得分:1)
如果您正在运行复杂查询,则可能是导致延迟的基础MySQL数据库,而不是phpMyAdmin。 您可能希望优化查询或数据库结构。
答案 2 :(得分:0)
您需要在where子句中使用的列上创建indexes以查找行。
索引可以快速完成任务。