mysql和sqlserver到底谁的速度快?

vivanboy 2002-08-30 10:36:06
加精
测试结果让我痛心。本来一直还以为mysql是最快的数据库....
结果如下:(单位为秒)
比较项目 mysql耗时 sqlserver耗时
连结时间 0.01364 0.28493
插入一万条纪录 2.80973 12.94204
更新一万条纪录 812.48759 50.34521
删除一万条纪录 184.05414 31.28243

测试环境:
AMDcpu850+RAM128+window200server+php4.2.1+apache+sqlserver2000+mysql3.23.39

测试数据库:
CREATE TABLE test (
id int(11) NOT NULL auto_increment,
name varchar(50) NOT NULL,
num int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (id)
);

测试程序:
<?
echo "mysql和sqlserver数据库速度测试:<BR><BR>";
$m=10000;
function getmicrotime(){ //取得当前时间。单位是百万分之一秒
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}

$mysql_link_time_start = getmicrotime();
//mysql数据库连结
$mysql_link=mysql_connect("localhost","root","");
mysql_select_db("test");
$mysql_link_time_end = getmicrotime();
$mysql_link_time = $mysql_link_time_end - $mysql_link_time_start ;
echo "mysql数据库连结花了".$mysql_link_time."秒钟!<BR>";

$mysql_insert_time_start = getmicrotime();
//mysql数据库插入一万条纪录
for($n=0;$n<$m;$n++){
mysql_query("insert into test(name,num) values('ljh','".$n."')"); //插入
// mysql_query("update test set name='xxx' where num='".$n."'"); //更新
// mysql_query("delete from test where num='".$n."'"); //删除
}
$mysql_insert_time_end = getmicrotime();
$mysql_insert_time = $mysql_insert_time_end - $mysql_insert_time_start;
echo "mysql数据库插入".$m."条纪录花了".$mysql_insert_time."秒钟!<BR>";
mysql_close($mysql_link);

echo "<BR>";

$sqlserver_link_time_start = getmicrotime();
//sqlserver数据库连结
$sqlserver_link=mssql_connect("localhost","sa","");
mssql_select_db("my_web");
$sqlserver_link_time_end = getmicrotime();
$sqlserver_link_time = $sqlserver_link_time_end - $sqlserver_link_time_start;
echo "sqlserver数据库连结花了".$sqlserver_link_time."秒钟!<BR>";

$sqlserver_insert_time_start = getmicrotime();
//sqlserver数据库插入一万条纪录
for($n=0;$n<$m;$n++){
mssql_query("insert into test(name,num) values('ljh','".$n."')");
// mssql_query("update test set name='xxx' where num='".$n."'");
// mssql_query("delete from test where num='".$n."'");
}
$sqlserver_insert_time_end = getmicrotime();
$sqlserver_insert_time = $sqlserver_insert_time_end - $sqlserver_insert_time_start;
echo "sqlserver数据库插入".$m."条纪录花了".$sqlserver_insert_time."秒钟!<BR>";
mssql_close($sqlserver_link);
?>

测试时注意:
不要动鼠标,测试前关闭其他可能会影响到测试的应用程序;
修改php.ini:max_execution_time = 200000

个人疑问:
1.难道mysql在linux上的速度才会达到最快,哪位兄台能否帮我在linux上面测试一下;
2.sqlserver还没有用到存储过程,如果用到了,那不是比mysql更加要快了?;
3.为什么插入速度mysql要快,但更新和删除却要慢多了,是不是检索速度太慢;
4.我的测试程序是不是有问题?

希望大家踊跃发言!
...全文
4711 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivanboy 2002-09-03
  • 打赏
  • 举报
回复
不爽,还是结帖
tangwm 2002-09-03
  • 打赏
  • 举报
回复
SQL还是好,
但毕竟MYSQL是和它搭配的吗
chao_ping 2002-09-02
  • 打赏
  • 举报
回复
谁的数据库只是用来跑insert, update, delete的?数据库的绝大多数语句是select的速度!
qianjiu 2021-06-30
  • 举报
回复
@chao_ping 查询的话,mysql比sqlserver慢的多
vivanboy 2002-09-02
  • 打赏
  • 举报
回复
大家都没有用linux吗?没用过存储过程吗?
vivanboy 2002-08-31
  • 打赏
  • 举报
回复
测试了一下存储过程,更让我大吃一惊:
比较项目 sqlserver存储过程
插入一万条纪录 11.95782
更新一万条纪录 152.47655
删除一万条纪录 133.94971

竟然比不用存储过程的时间要长的多。这到底是为什么?
存储过程:
CREATE PROCEDURE test_update
@name varchar(50) ,@num int
as
update test set name=@name where num=@num
GO

CREATE PROCEDURE test_insert
@name varchar(50) ,@num int
as
insert into test(name,num) values(@name,@num)

GO

CREATE PROCEDURE test_delete
@num int
as
delete from test where num=@num
GO

而且都已经编译过。

执行语句:
mssql_query("exec test_insert 'xxx',$n");
mssql_query("exec test_update 'YYY',$n");
mssql_query("exec test_delete $n");

请各位分析原因。
随便问:
mssql_execute()这个函数执行存储过程,如何带上参数?可能用这个函数要快些
pcdreama 2002-08-31
  • 打赏
  • 举报
回复
那个说mysql性能紧追oracle的测试好像是基于mysql4的,而且对mysql作了很大优化(所以现在很期待mysql4的正式版)。
其实对这个结果,我觉得mysql是免费的,功能是比较弱,用于基于web的数据库是很适合。但是如果要做大型项目,一般都用其他数据库了吧。二来mysql和php结合得很好,单看php不用dl就可以用mysql就知道,而且使用又方便,对于楼主的测试结果那种性能,我觉得如果在要求不是太严格的情况下,还是可以接受的,也不需要就这样就对mysql失去信心这么严重
lm5580409 2002-08-31
  • 打赏
  • 举报
回复
为什么没有测postgreSQL的速度啊?
vivanboy 2002-08-31
  • 打赏
  • 举报
回复
首先谢谢楼上各位。

to microsoft_windows(禮拜四) :
你的测试让我大吃一惊,原来你没有建库,hehe

to miyostudio(miyo):
如果你提供的这个测试结果属实,那让我对mysql又有了新的信心。也就是说mysql的并发操作强于sqlserver;
我也知道mysql+windows性能和速度肯定比不上mysql+linux,所以也征求各位在linux下面的测试结果。

to 版主 _Shakespeare(网络骑士) :
我说的是sqlserver的存储过程,并没有提到mysql的存储过程。如果前者用到存储过程,速度肯定会大大提高。我会测试存储过程的;
还有就是
http://www.yesky.com/20011011/200505.shtml
的测试结果让人怀疑,因为从我上面的结果来看,sqlserver的检索速度在windows应该比mysql快.不知道他们是在怎样的环境下测试的


darzui 2002-08-31
  • 打赏
  • 举报
回复
我觉得以下几个数据库之间的比较有实际价值
mysql
postgreSQL
mssql
interbase(fire bird)
不过我只会mysql,现在正在学习interbase和mssql,哪位朋友有条件做一下以上的测试?
vivanboy 2002-08-31
  • 打赏
  • 举报
回复
没有一点实际价值????
那为什么还有windows下面的php+mysql.照你这样说,干脆不要搞什么windows版本的php了。

还是期待大家linux下面的测试结果,看能否赶上上面sqlserver的速度
icewolf_li 2002-08-31
  • 打赏
  • 举报
回复
在windows下面做测试当然sql server快了。本来就没有多少实际应用会选择在w2k下面用php+apache+mysql的,这是linux下的黄金组合;asp+iis+sql server才是瘟都死的最佳搭档。你做的测试没有一点实际价值。
vivanboy 2002-08-30
  • 打赏
  • 举报
回复
既然大家怀疑id这个字段,我就删除了。
CREATE TABLE test (
name varchar(50) NOT NULL,
num int(11) DEFAULT '0' NOT NULL
);

下面是测试结果:

比较项目 mysql耗时 sqlserver耗时
连结时间 0.03075 1.60925
插入一万条纪录 2.82545 17.82020
更新一万条纪录 854.32390 54.06806
删除一万条纪录 180.14272 37.29615

结果和有id差不多。
大家如果怀疑这个结果,可以亲自测试一下。

darzui 2002-08-30
  • 打赏
  • 举报
回复
楼主,你不用autoincrement,再测试一次看看。
vivanboy 2002-08-30
  • 打赏
  • 举报
回复
补充:
在sqlserver建立数据表的时候,当字段类型为int等的时候,下面就会有标识选择行。这就相当于mysql的auto_increment.
vivanboy 2002-08-30
  • 打赏
  • 举报
回复
但是两个数据库测试方法一样。对次序有什么影响?难道对sqlserver就没有影响???请具体一点,ok?

SqlServer 也支持 auto_increment 吗?
相信我,当然支持。不然我干嘛加上id这个字段

我用的mysql当然是正式稳定版,在mysql网站上下载
alexxing 2002-08-30
  • 打赏
  • 举报
回复
1. 测试条件片面性,插入和删除的次序对速度有影响
2. 两者的表结构肯定不一样:SqlServer 也支持 auto_increment 吗?
3. Win32 下的 MySQL 肯定比不上 Linux 下的,而且你的是正式版本吗?(免费下载的可能是 alpha 版本)
vivanboy 2002-08-30
  • 打赏
  • 举报
回复
程序,应用,支持,环境

我想除了环境以外,sqlserver都是比较好的。mysql功能太差。

本来以为mysql速度最快,谁知道连速度也赶不上sqlserver。

那在window环境下岂不是php+sqlserver比php+mysql要好???php+mysql还算黄金搭档???
anziqi 2002-08-30
  • 打赏
  • 举报
回复
你老人家不是已经用事实说明一切了吗...
zyme 2002-08-30
  • 打赏
  • 举报
回复
为什么不比较一下其它情况?程序,应用,支持,环境,
vivanboy 2002-08-30
  • 打赏
  • 举报
回复
两个数据库都有auto_increment的字段

楼上说:mssql好像不支持auto_increment
这句话错误。用IDENTITY [ ( seed , increment ),也就是标识
加载更多回复(14)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧