小编bse*_*van的帖子

mysql存储过程比标准查询慢20倍

我有10个表,除了表名以外具有相同的结构.

我有一个sp(存储过程)定义如下:

 select * from table1 where (@param1 IS NULL OR col1=@param1)
 UNION ALL
 select * from table2 where (@param1 IS NULL OR col1=@param1)
 UNION ALL
 ...
 ...
 UNION ALL
 select * from table10 where (@param1 IS NULL OR col1=@param1)
Run Code Online (Sandbox Code Playgroud)

我用以下行调用sp:

call mySP('test')  //it executes in 6,836s
Run Code Online (Sandbox Code Playgroud)

然后我打开了一个新的标准查询窗口.我刚刚复制了上面的查询.然后用'test'替换@ param1.

这在0,321秒内执行,比存储过程快20倍.

我重复更改了参数值,以防止缓存结果.但这并没有改变结果.SP比同等标准查询慢大约20倍.

请你帮我弄清楚为什么会这样?

有没有人遇到类似的问题?

我在Windows Server 2008 R2 64位上使用mySQL 5.0.51.

编辑:我正在使用Navicat进行测试.

任何想法对我都有帮助.

EDIT1:

我根据Barmar的回答做了一些测试.

最后,我改变了下面的sp,只有一行:

 SELECT * FROM table1 WHERE col1=@param1 AND col2=@param2
Run Code Online (Sandbox Code Playgroud)

然后我首先执行标准查询

 SELECT * FROM table1 WHERE col1='test' AND …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures

14
推荐指数
2
解决办法
1万
查看次数

ios从没有圆角的字符串加倍

下面的代码是我的纬度字符串.我不希望它变得圆润.double lat必须是41.04546.

NSString *latitude= @"41.04546";
double lat= latitude.doubleValue;  //it gives 41.0455
CLLocationCoordinate2D coordinat;
coordinat.latitude= lat;
Run Code Online (Sandbox Code Playgroud)

对于不能舍入的精确坐标.

iphone double rounding ios

7
推荐指数
1
解决办法
7976
查看次数

标签 统计

double ×1

ios ×1

iphone ×1

mysql ×1

rounding ×1

stored-procedures ×1