代码之家  ›  专栏  ›  技术社区  ›  sestocker

MySQL和SQL Server之间的差异[已关闭]

  •  137
  • sestocker  · 技术社区  · 16 年前

    我是一个 ASP.NET 使用过的开发人员 Microsoft SQL Server 满足我所有的数据库需求(包括工作和个人项目)。

    我正在考虑尝试 LAMP 我的一些个人项目。

    两者的主要区别是什么 MySQL SQL Server ?正在使用 stored procedures MySQL ?

    你有什么建议或资源可以帮助我进行转换吗?

    对于那些对两者都有经验的人来说,是否有 MySQL ?

    12 回复  |  直到 6 年前
        1
  •  134
  •   Peter Mortensen icecrime    9 年前

    您必须注意的一件事是,sqlserver和mysql实现SQL语法的方式存在相当严重的差异。

    这里有一个很好的地方 Comparison of Different SQL Implementations .

    例如,看看顶部的N部分。在MySQL中:

    SELECT age
    FROM person
    ORDER BY age ASC
    LIMIT 1 OFFSET 2
    

    在SQLServer(T-SQL)中:

    SELECT TOP 3 WITH TIES *
    FROM person
    ORDER BY age ASC
    
        2
  •  46
  •   Remy    8 年前

    这里的许多评论听起来更像是宗教争论,而不是现实生活中的陈述。 我在MySQL和MSSQL都工作了多年,都是好产品。 我将主要根据您所工作的环境选择MySQL。大多数开源项目都使用MySQL,所以如果您朝这个方向发展,您可以选择MySQL。如果你用.NET开发一些东西,我会选择MSSQL,不是因为它更好,而是因为大多数人都使用它。 我现在正在一个使用ASP.NET和MySQL和C的项目中。它工作得很好。

        3
  •  21
  •   ely    12 年前

    我不敢相信没有人提到mysql不支持common table expressions(cte)/“with”语句。这是一个非常恼人的区别。

        4
  •  15
  •   Jon Galloway    16 年前

    MySQL更容易出现数据库损坏问题,并且不会在出现问题时自动修复。我从6.5版就开始使用MSSQL,不记得数据库在脱机时出现了数据库损坏问题。我在一个生产环境中与MySQL合作过几次,一个数据库损坏的问题使整个数据库离线,直到我们从命令行运行“请修复我损坏的索引”这一魔力。

    根据我的经验,MSSQL的事务和日志记录系统可以处理几乎所有的事情——包括电源循环或硬件故障——而不会造成数据库损坏,如果有什么问题,它会自动修复。

    这是我的经验,我很高兴听到这个问题已经解决,或者我们做错了什么。

    http://dev.mysql.com/doc/refman/6.0/en/corrupted-myisam-tables.html

    http://www.google.com/search?q=site%3Abugs.mysql.com+index+corruption

        5
  •  7
  •   Abdu    16 年前

    坦白说,我找不到使用MySQL而不是MSSQL的单一原因。以前的问题是成本问题,但是SQL Server 2005 Express是免费的,而且有许多Web主机公司提供的SQL Server全套主机服务每月不到5.00美元。

    MSSQL更容易使用,并且有许多在MySQL中不存在的特性。

        6
  •  7
  •   dkretz    13 年前

    与MSSQL相比,MySQL中的所有操作似乎都更接近金属,文档对此进行了处理。特别是对于优化,您需要了解索引、系统配置和优化器在各种情况下是如何交互的。

    “优化器”更像是一个解析器。在MSSQL中,您的查询计划通常是一个惊喜(通常是好的,有时不是)。在MySQL中,它基本上是按照您所期望的方式执行您要求它执行的操作。这意味着你自己需要对可能的各种方式有一个深刻的理解。

    不是基于良好的事务模型构建的(默认myisam引擎)。

    文件系统设置是您的问题。

    所有数据库配置都是您的问题——尤其是各种缓存大小。

    有时,最好把它看作是一个特别的、荣耀的国际安全援助组织。密码子和日期在这里不太重要。他们会毫不尴尬地说出来。

        7
  •  5
  •   Peter Mortensen icecrime    9 年前

    我认为需要注意的一个主要问题是,MySQL5.0之前的版本没有视图、触发器和存储过程。

    更多信息请参见 MySQL 5.0 Download page .

        8
  •  4
  •   prince    15 年前

    两者都是DBMS的产品SQL Server是一个商业应用程序,而MySQL是一个OpenSouces应用程序。这两个产品都包含类似的功能,但是SQL Server应该用于企业解决方案,而MySQL可能适合较小的实现。如果您需要恢复、复制、granalar安全和重要的功能,则需要SQL服务器

    与SQL Server相比,MySQL占用的磁盘空间更少,占用的内存和CPU也更少。

        9
  •  3
  •   dlinsin JaviAlgaba    16 年前

    任何人都有过 来自SQL Server的数据库的“端口” 去MySQL?

    这应该是相当痛苦的!我将MySQL的版本从4.x切换到5.x,各种语句将不再像以前那样工作。查询分析器得到了“改进”,因此以前针对性能调优的语句将不再像预期的那样工作。

    使用500gbmysql数据库的经验是:这是一个微妙的主题,其他任何东西都是微不足道的!

        10
  •  3
  •   Community CDub    7 年前

    @阿布杜

    我发现MySQL超过MSSQL的主要原因是时区支持——能够在时区之间很好地切换,尊重日光节约是非常棒的。

    比较一下:

    mysql> SELECT CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles');
    +-----------------------------------------------------------------+
    | CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles') |
    +-----------------------------------------------------------------+
    | 2008-04-01 05:00:00                                             |
    +-----------------------------------------------------------------+
    

    对涉及的扭曲 this answer .

    至于“更容易使用”的评论,我想说的是,它们是不同的,如果你知道的话,在学习另一个方面会有很大的开销。

        11
  •  2
  •   Abdu    16 年前

    @ Cebjyre。无论是EnterpriseManager还是ManagementStudio,IDE都比我迄今为止为MySQL所看到的任何东西都要好。我说“更容易使用”,因为我可以在MSSQL中做很多事情,在那里MySQL没有对应的。在MySQL中,我不知道如何通过简单地查看查询计划或查看统计信息来优化查询。MSSQL中的索引调优向导对哪些索引丢失或放错位置进行了大部分猜测工作。

    MySQL的一个缺点是没有数据库的最大大小。数据库的大小只会增加到填满磁盘为止。想象一下,如果这个磁盘正在与其他用户共享数据库,并且由于数据库无法增长,他们的所有查询突然都失败了。我早就向MySQL报告了这个问题。我觉得还没修好。

        12
  •  1
  •   Einstein    16 年前

    从MSSQL到MySQL的语法POV,我花了一些时间与MySQL打交道,发现自己的能力有限。

    在更新期间对同一个表重新冻结的同时更新一个表存在bizzare限制。

    另外,来自的更新不起作用,上次我检查它们时,它们也不支持Oracle合并成语法。这对我来说是一个表演的拦路虎,在那之后我不再想我会在mysql上得到任何地方。