我hava巢查询:
SELECT PIXEL_X as 'X_Coord', PIXEL_Y as 'Y_Coord',
CONVERTWATTS2DBM_udf(SUM(L2_VALUE)/SUM(L3_VALUE)) as 'Pixel_Value'
FROM table
WHERE
('GSM 850/900' like CONCAT('%',FILTER2,'/%') OR
'GSM 850/900' like CONCAT('%/',FILTER2,'%') )
GROUP BY X_Coord, Y_Coord;
但需要很长时间,你能帮助我提高他们的表现吗?
由于
答案 0 :(得分:0)
优化的直接方法是:
为“GMS 850/900”的每个选项设置一个查询,然后使用UNION将它们连接在一起,如下所示:
SELECT PIXEL_X as 'X_Coord', PIXEL_Y as 'Y_Coord',
CONVERTWATTS2DBM_udf(SUM(L2_VALUE)/SUM(L3_VALUE)) as 'Pixel_Value'
FROM table WHERE
'GSM 850/900' like '%YOURVALUE1%'
UNION
SELECT PIXEL_X as 'X_Coord', PIXEL_Y as 'Y_Coord',
CONVERTWATTS2DBM_udf(SUM(L2_VALUE)/SUM(L3_VALUE)) as 'Pixel_Value'
FROM table WHERE
'GSM 850/900' like '%YOURVALUE2%'
这可以加快查询速度。
此外,如果您事先生成了动态生成的值,它会加快查询速度。您可以创建一个列并在ON WRITE触发器中生成CONVERTWATTS2DBM_udf。这样就不再需要在每一行上运行此函数,而且还必须在查询本身的每次运行中运行此函数。
最后,Pixel_X,Pixel_Y和新创建的列的复合索引可以进一步加快查询速度。