Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
如何最小化此sql查询_Sql_Optimization - Fatal编程技术网

如何最小化此sql查询

如何最小化此sql查询,sql,optimization,Sql,Optimization,我希望尽量减少查询执行时间。检索数据花费的时间太长。您可以像这样使用CASE并删除连接的使用 SELECT sale1, sale2 , sale3 FROM ( SELECT Sum(todayssale) AS sale1 FROM sale_details USE index (index_sale) WHERE productid='242431'

我希望尽量减少查询执行时间。检索数据花费的时间太长。

您可以像这样使用
CASE
并删除
连接的使用

SELECT sale1, 
       sale2 , 
       sale3 
FROM   ( 
              SELECT Sum(todayssale) AS sale1 
              FROM   sale_details USE index (index_sale) 
              WHERE  productid='242431' 
              AND    exacttime >= '2015-06-29 14:29:36' ) a 
JOIN 
       ( 
              SELECT sum(todayssale) AS sale2 
              FROM   sale_details USE index (index_sale) 
              WHERE  productid='242431' 
              AND    exacttime >= '2015-06-23 14:29:36' ) b 
JOIN 
       ( 
              SELECT sum(todayssale) AS sale3 
              FROM   sale_details USE index (index_sale) 
              WHERE  productid='242431' 
              AND    date>='2015-06-29' ) c
试着跟随

SELECT
    sum(CASE WHEN exacttime >= '2015-06-29 14:29:36' THEN todayssale ELSE 0 END) as sale1
    sum(CASE WHEN exacttime >= '2015-06-23 14:29:36' THEN todayssale ELSE 0 END) as sale2
    sum(CASE WHEN date>='2015-06-29' THEN todayssale ELSE 0 END) as sale3
FROM   sale_details USE index (index_sale) 
WHERE  productid='242431' 
AND (exacttime >= '2015-06-23 14:29:36' OR date>='2015-06-29')

您正在使用哪个rdbms?删除连接,更重要的是还删除子查询+1.
SELECT 
    (SELECT Sum(todayssale) FROM sale_details WHERE productid='242431' AND exacttime >= '2015-06-29 14:29:36') as sale1, 
    (SELECT Sum(todayssale) FROM sale_details WHERE productid='242431' AND exacttime >= '2015-06-23 14:29:36') as sale2 , 
    (SELECT Sum(todayssale) FROM sale_details WHERE productid='242431' AND date >= '2015-06-29') as sale3