Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 总工程师!我能想象的唯一的性能改进来自于预先计算十进制类型的日志(无论如何,这可能足够快,所以必须进行测试),否则整个事情仍然是IO限制的,所有这些都只是过早的优化。哦,天哪,我真傻。是的,对数可以是任意值。更正。向上投票,因为这是另一种方式(然而,这不是_Mysql_Sql - Fatal编程技术网

Mysql 总工程师!我能想象的唯一的性能改进来自于预先计算十进制类型的日志(无论如何,这可能足够快,所以必须进行测试),否则整个事情仍然是IO限制的,所有这些都只是过早的优化。哦,天哪,我真傻。是的,对数可以是任意值。更正。向上投票,因为这是另一种方式(然而,这不是

Mysql 总工程师!我能想象的唯一的性能改进来自于预先计算十进制类型的日志(无论如何,这可能足够快,所以必须进行测试),否则整个事情仍然是IO限制的,所有这些都只是过早的优化。哦,天哪,我真傻。是的,对数可以是任意值。更正。向上投票,因为这是另一种方式(然而,这不是,mysql,sql,Mysql,Sql,总工程师!我能想象的唯一的性能改进来自于预先计算十进制类型的日志(无论如何,这可能足够快,所以必须进行测试),否则整个事情仍然是IO限制的,所有这些都只是过早的优化。哦,天哪,我真傻。是的,对数可以是任意值。更正。向上投票,因为这是另一种方式(然而,这不是一个完整的答案,但无论如何感谢您的时间)似乎非常简单!但是,0存在问题。我觉得这可以简化,使用相同的思想:SELECT EXP(SUM(LOG(data))*(-0.5+MOD(COUNT(data


总工程师!我能想象的唯一的性能改进来自于预先计算十进制类型的日志(无论如何,这可能足够快,所以必须进行测试),否则整个事情仍然是IO限制的,所有这些都只是过早的优化。哦,天哪,我真傻。是的,对数可以是任意值。更正。向上投票,因为这是另一种方式(然而,这不是一个完整的答案,但无论如何感谢您的时间)似乎非常简单!但是,0存在问题。我觉得这可以简化,使用相同的思想:
SELECT EXP(SUM(LOG(data))*(-0.5+MOD(COUNT(data<0),2))*2)x从我的表中
这样您就不需要IF,并且
(-0.5+MOD(COUNT(data<0),2))*2
应该是1或-1。对于0值,从触发此查询的应用程序中发出select会更快,因为如果所有数据中至少有一个0,则无论其他所有数字如何,结果都为0。(ABS是个错误,我把它从评论中删除了…)是的,我想佩特卡可能已经破解了它!(假设这确实是处理零的方式) +------+ | data | +------+ | 2 | | -1 | | 3 | +------+
SELECT
  IF(COUNT(IF(SIGN(`col`)=0,1,NULL)),0,
    IF(COUNT(IF(SIGN(`col`)<0,1,NULL))%2,-1,1)
    *
    EXP(SUM(LN(ABS(`col`))))) as product
FROM `test`;
SELECT 
    CASE WHEN EXISTS (SELECT 1 FROM test WHERE <condition> AND datasign = 0)
         THEN 0
         ELSE (SELECT 1-2*(SUM(datasign=-1)%2) FROM test WHERE <condition>)
    END AS resultsign,

    CASE WHEN EXISTS (SELECT 1 FROM test WHERE <condition> AND datasign = 0)
         THEN -1            -- undefined log for result 0
         ELSE (SELECT SUM(datalog) FROM test WHERE <condition> AND datasign <> 0)
    END AS resultlog
  ;
SELECT IF(MOD(COUNT(data < 0),2)=1
        , EXP(SUM(LOG(data)))*-1
        , EXP(SUM(LOG(data))))
          x 
  FROM my_table;