SELECT mt.Test_ID,
mtp.Test_Plan_Doc_No,
mp.Group_Name,
mp.Point_Name,
mp.Limit_1,
mp.Limit_2,
mp.Datatype,
mt.Start_Date,
mv.Measurement_Value,
mv.Status_Value
FROM measurement_test mt
INNER JOIN measurement_values mv
ON mt.Test_ID = mv.Test_ID
INNER JOIN measurement_point mp
ON mv.Point_ID = mp.Point_ID
INNER JOIN measurement_test_plan mtp
ON mtp.Test_ID = mt.Test_ID
WHERE mtp.Test_Plan_Doc_No IN ( 'test1', 'test2' )
AND mp.Group_Name = 'gp_name'
大家好。
以上是我正在执行以创建 View 的查询。
但是我有一个问题如下:
测量值表有大约 8200 万行。 测量点表大约有 500 万行 测量测试计划和测量测试表大约有 9000 - 100000 行。
我的问题是,当我执行上述查询时,执行时间为 8 分钟,生成的结果只有 400 行。
有什么方法可以减少上述查询的执行时间吗?
注意:我在我的网页中使用上述查询
最佳答案
首先,为了实现高效的join
,您应该让表按行数递增的顺序排列。这大大减少了行扫描的数量。因此对于您的查询,join
顺序应该是measurement_test mt natural join measurement_point mp natural join measurement_values mv
。还要确保连接列上定义了索引,并且它们具有完全相同的数据类型。 char(15)
和 varchar(15)
在 MySQL 中被认为是相似的,但不是 char(15)
和 varchar(10)
。
关于mysql - 减少 mysql 查询执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12155789/