【发布时间】:2016-07-07 10:12:27
【问题描述】:
我正在尝试比较 MySql 和 MS SQL Server 的基本 insert 性能。使用 Business Management Studio 执行以下 MSSQL 查询需要 1 秒:
declare @i int
set @i=1
while (@i<1000)
begin
insert into empmast
(name) values ( 'Client ' + cast(@i as varchar(10) ))
set @i = @i + 1
end
go
WorkBench 中的类似查询需要 40 秒才能执行。这是查询:
DELIMITER $$
DROP PROCEDURE IF EXISTS xproc_loop_test$$
CREATE PROCEDURE xproc_loop_test()
BEGIN
DECLARE int_val INT DEFAULT 0;
test_loop : LOOP
IF (int_val > 1000) THEN
LEAVE test_loop;
END IF;
SET int_val = int_val +1;
insert into empmast (name) values ( 'Client ' + int_val );
END LOOP;
END;
这是否意味着 MySQL 在数据插入方面要慢得多?
【问题讨论】:
-
为什么在一种情况下创建存储过程而在另一种情况下只有一个循环。基本相同的代码不会给你一个更公平的结果吗?
-
@jonny Mysql 只允许存储过程(和函数)中的循环
-
@P.Salmon mySql 耗时更长的原因可能与存储过程也被编译有关。
标签: mysql sql-server