mysql对于auto_increment更新和删除的时候都要进行一些处理,保持已经用过的序号不会重复出现,比如库中原有需要1,2,3,4,5,现在删除了5,再次插入一条数据,序号是6而不是5。这可能是导致速度变慢的原因
mssql好像不支持auto_increment吧,你试试看不用auto_increment列,再测试一次。
这里有mysql的官方测试http://www.mysql.com/information/benchs.html
可以比较一下mysql_odbc_nt4.0和ms-sql_odbc_nt4.0的数据,不过这里是sql7而不是2000。

解决方案 »

  1.   

    两个数据库都有auto_increment的字段楼上说:mssql好像不支持auto_increment
    这句话错误。用IDENTITY [ ( seed , increment ),也就是标识
      

  2.   

    程序,应用,支持,环境我想除了环境以外,sqlserver都是比较好的。mysql功能太差。本来以为mysql速度最快,谁知道连速度也赶不上sqlserver。那在window环境下岂不是php+sqlserver比php+mysql要好???php+mysql还算黄金搭档???
      

  3.   

    1. 测试条件片面性,插入和删除的次序对速度有影响
    2. 两者的表结构肯定不一样:SqlServer 也支持 auto_increment 吗?
    3. Win32 下的 MySQL 肯定比不上 Linux 下的,而且你的是正式版本吗?(免费下载的可能是 alpha 版本)
      

  4.   

    但是两个数据库测试方法一样。对次序有什么影响?难道对sqlserver就没有影响???请具体一点,ok?SqlServer 也支持 auto_increment 吗?
    相信我,当然支持。不然我干嘛加上id这个字段我用的mysql当然是正式稳定版,在mysql网站上下载
      

  5.   

    补充:
    在sqlserver建立数据表的时候,当字段类型为int等的时候,下面就会有标识选择行。这就相当于mysql的auto_increment.
      

  6.   

    楼主,你不用autoincrement,再测试一次看看。
      

  7.   

    既然大家怀疑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差不多。
    大家如果怀疑这个结果,可以亲自测试一下。
      

  8.   

    我也用 vivanboy(我是谁?) 的方法测试了一下,发现结果确实如 vivanboy(我是谁?) 所说的,下面是我的测试结果:
    PIII667+128M+win2000 adv server+SQL server2000+php4.2.2+apache 2.0.39+MySQL 版本 4.0.1-alpha-maxsqlserver数据库连结花了0.155929923058秒钟!
    sqlserver数据库插入10000条纪录花了16.8481429815秒钟!
    sqlserver数据库连结花了0.0262340307236秒钟!
    sqlserver数据库更新10000条纪录花了55.3983550072秒钟!
    sqlserver数据库连结花了0.0223009586334秒钟!
    sqlserver数据库删除10000条纪录花了36.8477600813秒钟!mysql数据库连结花了0.00819599628448秒钟!
    mysql数据库插入10000条纪录花了4.84794402122秒钟!
    mysql数据库更新    太慢了,等了半天还没出来,所以就没测了
    mysql数据库连结花了0.00804197788239秒钟!
    mysql数据库删除10000条纪录花了250.130182028秒钟!
      

  9.   

    mysql和oracle数据库性能比较
    http://www.code-labs.com/article/articleinfo.php?id=517
      

  10.   

    谢谢phpteam兄弟.
    我拷贝过来一句话:
    而在LINUX下,mysql的性能相对于在WIN32下,又有了一个很大的飞跃。由28秒骤减到10秒。我的linux服务器坏了,哪位兄弟的服务器是linux的,有空请帮忙测试一下。
      

  11.   

    oracle对于一个访问就开一个新进程,故而在配置较低的机器上速度很慢。它本来就是搭配高档服务器用的,所以oracle和mysql的比较没什么意义。倒是楼主的比较很有实际价值,另外,不知道interbase和mysql比较结果怎么样?
      

  12.   

    但是sql server不稳定啊,若多几个人就快爆了
      

  13.   

    我的测试结果,由于没有安装mssql,所以只测了mysql
    cr566+RAM192+window2000advserver+php4.2.2+apache1.3.24+mysql4.0.1 alpha+Ie窗 x 4
    连接:0.0632779598236
    插入:14.1100490093
    更新:14.1599799395
    删除:13.2482140064如果什么也不开,大概三个数据都在10-13秒上下
      

  14.   

    在Linux+Apache的状态下,mysql性能大幅提升,sqlserver远不是其对手。
    大家不要老用 windows系统来测试php+MySql的组合好不好,哪有人会用windows服务器来写php程序,在国外的主机市场,很少看得到windows server+php+mysql的组合,买这种配置的服务器的人都是傻X
      

  15.   

    我记得前段时间好像是zdnet的实验室做得一个权威测试吧
    sqlserver在windows下的性能
    oracle,mysql在linux下的性能
    作比较(还有其他数据库系统,例如DB2,informix等)结果,在500并发连接以下,sqlserver只比oracle,mysql稍弱一点点,比其他数据库系统都强!但到了750就开始拉大距离,上了1000以后所有数据库系统都不行了,只有mysql还紧紧地追着oracle,而sqlserver的性能下降的最厉害,到了1200以后,sqlserver成为最后一名,弱于参与测试的所有数据库系统。
    另外,Oracle自始至终都是最强悍的,不过mysql始终追得很紧,平均下来,性能上只是在1000并发连接以后距离才与oracle拉大。
      

  16.   

    对了,我的测试没有建库,没用mysql在win下的确没有什么性能,很慢很慢,不过,php+mysql是一种组合,是不可分开的,在windows下开发,然后移植,是一种开发模式
      

  17.   

    有没有 用postgreSQL 的 ?
      

  18.   

    to vivanboy (我是谁?) :
    测试mysql中你用到了存储过程吗?mysql现在开始支持了吗?应用平台对数据库操作的速度影响是很大的。
    另外,楼主的测试脚本本身是解释性的语言它的运行速度就很慢,如果用这个方法来测试的话得到的结论不是很可信。
    http://www.yesky.com/20011011/200505.shtml
    http://www.yesky.com/20011012/200590.shtml浅妄薄见,望与斟酌
      

  19.   

    首先谢谢楼上各位。to  microsoft_windows(禮拜四) :
    你的测试让我大吃一惊,原来你没有建库,heheto miyostudio(miyo):
    如果你提供的这个测试结果属实,那让我对mysql又有了新的信心。也就是说mysql的并发操作强于sqlserver;
    我也知道mysql+windows性能和速度肯定比不上mysql+linux,所以也征求各位在linux下面的测试结果。to 版主 _Shakespeare(网络骑士) :
    我说的是sqlserver的存储过程,并没有提到mysql的存储过程。如果前者用到存储过程,速度肯定会大大提高。我会测试存储过程的;
    还有就是
    http://www.yesky.com/20011011/200505.shtml
    的测试结果让人怀疑,因为从我上面的结果来看,sqlserver的检索速度在windows应该比mysql快.不知道他们是在怎样的环境下测试的
      

  20.   

    为什么没有测postgreSQL的速度啊?
      

  21.   

    测试了一下存储过程,更让我大吃一惊:
    比较项目            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
    GOCREATE PROCEDURE test_insert
    @name varchar(50) ,@num int
    as
    insert into test(name,num) values(@name,@num)GOCREATE 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()这个函数执行存储过程,如何带上参数?可能用这个函数要快些
      

  22.   

    在windows下面做测试当然sql server快了。本来就没有多少实际应用会选择在w2k下面用php+apache+mysql的,这是linux下的黄金组合;asp+iis+sql server才是瘟都死的最佳搭档。你做的测试没有一点实际价值。
      

  23.   

    没有一点实际价值????
    那为什么还有windows下面的php+mysql.照你这样说,干脆不要搞什么windows版本的php了。还是期待大家linux下面的测试结果,看能否赶上上面sqlserver的速度
      

  24.   

    我觉得以下几个数据库之间的比较有实际价值
    mysql
    postgreSQL
    mssql
    interbase(fire bird)
    不过我只会mysql,现在正在学习interbase和mssql,哪位朋友有条件做一下以上的测试?
      

  25.   

    那个说mysql性能紧追oracle的测试好像是基于mysql4的,而且对mysql作了很大优化(所以现在很期待mysql4的正式版)。
    其实对这个结果,我觉得mysql是免费的,功能是比较弱,用于基于web的数据库是很适合。但是如果要做大型项目,一般都用其他数据库了吧。二来mysql和php结合得很好,单看php不用dl就可以用mysql就知道,而且使用又方便,对于楼主的测试结果那种性能,我觉得如果在要求不是太严格的情况下,还是可以接受的,也不需要就这样就对mysql失去信心这么严重
      

  26.   

    大家都没有用linux吗?没用过存储过程吗?
      

  27.   

    谁的数据库只是用来跑insert, update, delete的?数据库的绝大多数语句是select的速度!
      

  28.   

    SQL还是好,
    但毕竟MYSQL是和它搭配的吗