Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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_Optimization_Profiling_Query Optimization - Fatal编程技术网

如何比较MySQL中两个函数的平均运行时间?

如何比较MySQL中两个函数的平均运行时间?,mysql,optimization,profiling,query-optimization,Mysql,Optimization,Profiling,Query Optimization,我想比较MySQL中两个函数的平均运行时间- 平方距离:功率(x1-x2,2)+功率(y1-y2,2)+功率(z1-z2,2) vs 点积:x1*x2+y1*y2+z1*z2 现在,无论我选择哪个函数,都将在单个查询中运行50000000000次因此,即使它们在运行时的细微差别也很重要 所以,我试着分析。这是我得到的 mysql> show profiles; +----------+------------+----------------------------------------

我想比较MySQL中两个函数的平均运行时间-

平方距离
功率(x1-x2,2)+功率(y1-y2,2)+功率(z1-z2,2)

vs

点积
x1*x2+y1*y2+z1*z2

现在,无论我选择哪个函数,都将在单个查询中运行50000000000次因此,即使它们在运行时的细微差别也很重要

所以,我试着分析。这是我得到的

mysql> show profiles;
+----------+------------+-----------------------------------------------------------------------+
| Query_ID | Duration   | Query                                                                 |
+----------+------------+-----------------------------------------------------------------------+
|        4 | 0.00014400 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|        5 | 0.00012800 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|        6 | 0.00017000 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|        7 | 0.00024800 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|        8 | 0.00014400 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|        9 | 0.00014000 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|       10 | 0.00014900 | select pow(rand()-rand(),2)+pow(rand()-rand(),2)+pow(rand()-rand(),2) |
|       11 | 0.00015000 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       12 | 0.00012000 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       13 | 0.00015200 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       14 | 0.00022500 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       15 | 0.00012700 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       16 | 0.00013200 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       17 | 0.00013400 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
|       18 | 0.00013800 | select rand()*rand()+rand()*rand()+rand()*rand()                      |
+----------+------------+-----------------------------------------------------------------------+
15 rows in set, 1 warning (0.00 sec)
这一点都没有太大帮助,运行时的波动太大了,我不知道哪一个更快,速度有多快

我需要将每个函数运行10000次,以获得一个良好且一致的平均运行时间。我如何在MySQL中实现这一点

(请注意,
rand()

编辑:

当然,我可以创建一个临时表,这会有点不方便,用随机值填充它,这也是不直接的(请参阅),然后继续比较我的函数


我想知道MySQL中是否存在更好的方法。

在最好的情况下,函数
pow
检测指数是整数2,并用一次乘法执行指数运算。没有理由认为它可以超越纯粹的乘法。

也许你可以创建一个表a,其中只有一列名为c,并插入50000000条记录,然后从a中选择rand()*rand()+rand()*rand()+rand()*rand()作为c0,a.c;这个选择将计算50000次,也许会对你有所帮助。@coo我已经编辑了我的问题,这并不麻烦。只需一个简短的程序,插入一个循环。您不需要手动插入。您不是在分析距离函数,而是在分析rand!比较计算不同事物的表达式真的有意义吗?@Yvesdao比较它们确实有意义,因为地球上的两点(球体)平方距离最小化等于点积最大化,两个点之间距离为0的点有最大点积R*R。因此,我有一个选择,关于我如何进行查询…如果你的应用程序是计算密集型的,你最好寻找一个渐进复杂度更好的算法。我尝试了coo的建议,是的,点积平均快1.4倍。。。但是,创建一个完整的表并在每次需要为不同的函数计时时用随机数填充它是很不方便的。。。似乎没有其他方法…尝试切换到具有较低渐近复杂度的算法。