MySQL和SQL Server之间的区别

我是一名使用Microsoft SQL Server来处理所有数据库需求(无论是在工作还是在个人项目中)的ASP.NET开发人员。 我正在考虑尝试一些我的个人项目的LAMP堆栈。 MySQL和SQL Server之间的主要区别是什么? 在MySQL中是否使用存储过程是一种常见的做法? 任何build议或资源,你会build议帮助我的开关? 对于那些有经验的人,是否有任何MySQL的缺失function?

有一点你需要注意的是,SQL Server和MySQL实现SQL语法的方式存在着相当严重的差异。

这里有一个很好的比较不同的SQL实现 。

例如,看看top-n部分。 在MySQL中:

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

在SQL Server(T-SQL)中:

 SELECT TOP 3 WITH TIES * FROM person ORDER BY age ASC 

这里的许多评论听起来更像宗教争论,而不是现实生活中的言论。 我在MySQL和MSSQL上工作了很多年,都是很好的产品。 我会select主要基于你正在工作的环境的MySQL。 大多数开源项目都使用MySQL,所以如果你进入这个方向,MySQL是你的select。 如果你使用.Net开发一些东西,我会selectMSSQL,不是因为它好多了,而是因为这是大多数人使用的。 我实际上目前正在使用ASP.NET与MySQL和C#的项目。 它工作得很好。

我不能相信没有人提到MySQL不支持Common Table Expressions(CTE)/“with”语句。 这是一个非常恼人的差异。

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

坦率地说,我找不到一个理由使用MySQL而不是MSSQL。 以前的问题是成本,但SQL Server 2005 Express是免费的,有很多networking托pipe公司,提供完整的主机与SQL服务器每月less于$ 5.00。

MSSQL更易于使用,并具有MySQL中不存在的许多function。

MySQL中的所有东西似乎都比MSSQL更接近金属,而文档就是这样处理的。 特别是对于优化,您需要了解索引,系统configuration和优化器在各种情况下如何交互。

“优化器”更多的是一个parsing器。 在MSSQL你的查询计划往往是一个惊喜(通常很好,有时不)。 在MySQL中,它几乎完成了你所要求的工作,就像你期望的那样。 这意味着你自己需要对其可能完成的各种方式有深入的了解。

不是围绕一个好的TRANSACTION模型(默认的MyISAM引擎)构build的。

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

所有的数据库configuration是你的问题 – 特别是各种caching大小。

有时似乎最好把它看作一个特别的,荣耀的isam。 Codd和Date在这里并不重要。 他们会毫不尴尬地说出来。

我认为需要注意的一点是MySQL 5.0之前的版本没有视图,触发器和存储过程。

更多的这个在MySQL 5.0的下载页面中有解释。

两者都是DBMS的产品Sql服务器是一个商业应用程序,而MySql是一个opensouces应用程序。这两个产品包括类似的function,但是SQL服务器应该用于企业解决scheme,而MySQL可能适合一个较小的implementation.if你需要像恢复function,复制,安全和显着,你需要sql服务器

MySql在磁盘上占用的空间更less,并且使用比sql serverless的内存和CPU

任何人都有从SQL Server到MySQL数据库的“端口”的经验吗?

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

使用500GB MySQL数据库的经验教训:这是一个微妙的话题,除了微不足道的小事!

@abdu

我发现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 | +-----------------------------------------------------------------+ 

到这个答案涉及的扭曲。

至于“易于使用”的评论,我认为关键在于它们是不同的,如果你知道这一点,那么在学习其他方面会有一个开销。

@Cebjyre。 IDE是企业pipe理器还是pipe理工作室比我迄今为止所看到的MySQL都好。 我说'更容易使用',因为我可以在MSSQL中做很多事情,其中​​MySQL没有对应的东西。 在MySQL中,我不知道如何通过查看查询计划或查看统计数据来调整查询。 MSSQL中的索引调整向导将大部分猜测工作放在哪些索引缺失或错位的地方。

MySQL的一个缺点是数据库没有最大的大小。 数据库只会增加大小,直到填满磁盘。 想象一下,如果这个磁盘与其他用户共享数据库,并且由于他们的数据库无法增长,突然他们的所有查询都失败了。 我很久以前就向MySQL报告过这个问题。 我不认为它是固定的。

花一些时间从MSSQL到MySQL语法POV的工作,我一直在发现我自己的能力有限。

在更新表格时,如果在更新过程中对同一表格进行折叠,则会有更新限制。

此外,UPDATE FROM不起作用,上次我检查他们不支持Oracle MERGE INTO语法。 这对我来说是一个阻碍,我不想再用MySQL来获取任何东西。