Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 提高查询性能的步骤_Mysql_Performance - Fatal编程技术网

Mysql 提高查询性能的步骤

Mysql 提高查询性能的步骤,mysql,performance,Mysql,Performance,我有一个嵌套查询: 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('%/',

我有一个嵌套查询:

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;
但是需要很长时间,你能帮我提高他们的表现吗


谢谢

一个简单的优化方法是:

  • 自己创建过滤器变量,使用任何语言访问数据库
  • 为“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%'
    
这将加快查询速度

此外,如果您预先生成动态生成的值,那么查询速度会大大加快。您可以创建一个列,并在写时触发器中生成CONVERTWATTS2DBM_udf。这样不仅可以在每一行上运行此函数,而且还可以在查询本身的每一次运行上运行此函数


最后,在Pixel_X、Pixel_Y和新创建的列上建立复合索引可以进一步加快查询速度。

感谢您的回答,但没有改进,而且该表是临时的,是否可以在临时表中创建索引?当然可以。临时表在所有情况下都等同于普通表。只是范围不同。可以将临时表的作用域设置为连接,这意味着连接的关闭将处理作用域设置为该连接的临时表。使用%..%筛选查询关系数据库效率低下-几乎总是需要扫描表。您的表使用哪种类型的引擎:MyISAM还是InnoDB?您是否尝试过在没有分组的情况下运行此查询以检查筛选需要多少时间?最后,过滤器2的可能值以及“GSM 850/900”列中的值是什么?