有什么方法可以加快此mysql查询的速度吗?

时间:2019-08-03 22:25:52

标签: mysql select

我有一个表,其中的字段“ Transtype”是“ GAME_BET”或“ GAME_WIN”,而我必须加起来的字段“ AmountReal”作为负数(-)(如果Transtype是GAME_WIN或正数(+ )是Transtype = GAME_BET

我的查询如下:

SELECT SUM(t1.GameBet-t1.GameWin) as result from 
(SELECT 
if (TranType='GAME_BET',AmountReal,0 ) as GameBet,
if (TranType='GAME_WIN',-AmountReal,0) as GameWin
FROM DataFeed_test
WHERE Datetime >='2019-08-01') t1

是否有一种方法可以更快地执行此查询(要处理的行很多!),并有可能避免中间表t1?

1 个答案:

答案 0 :(得分:2)

您可以省略子查询并直接使用条件聚合。

public function username()
{
    return 'username';
}

为加快速度,在SELECT sum(CASE trantype WHEN 'GAME_BET' THEN amountreal WHEN 'GAME_WIN' THEN -amountreal ELSE 0 END) result FROM datafeed_test WHERE datetime >= '2019-08-01'; 上建立索引并支持datafeed_test (datetime)子句。您也可以在WHERE上尝试复合索引。