Answers:
您需要注意的一件事是,SQL Server和MySQL实现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多年,并且都是不错的产品。我会主要根据您正在使用的环境来选择MySQL。大多数开放源代码项目都使用MySQL,因此,如果朝这个方向发展,则选择MySQL。如果您使用.Net进行开发,我会选择MSSQL,不是因为它要好得多,而是导致大多数人使用它。我目前实际上在一个将ASP.NET与MySQL和C#结合使用的项目中。它工作得很好。
Lamp Stack
。很多人可能只会说LAMP或WAMP。同样,我们没有说是Microsoft SQL Server,而是使它成为了MS SQL Server到MS SQL到MSSQL
我无法相信,没有人提到MySQL不支持通用表表达式(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是免费的,并且有许多网络托管公司提供每月少于5.00美元的SQL Server完全托管。
MSSQL易于使用,并且具有MySQL中不存在的许多功能。
MySQL中的一切似乎都比MSSQL更接近金属,并且文档以这种方式对待它。尤其是对于优化,您需要了解索引,系统配置和优化器在各种情况下如何交互。
“优化器”更多是解析器。在MSSQL中,您的查询计划通常令人惊讶(通常很好,有时不是)。在MySQL中,它几乎按照您的期望做事。这意味着您自己需要对可能的各种方式有深刻的了解。
并非围绕良好的TRANSACTION模型(默认为MyISAM引擎)构建。
文件系统设置是您的问题。
所有数据库配置都是您的问题-尤其是各种缓存大小。
有时似乎最好将其视为临时的,荣耀的isam。此处的Codd和Date不太重要。他们会毫不尴尬地说。
我认为要注意的主要事情之一是MySQL 5.0之前的版本没有视图,触发器和存储过程。
更多信息,请参见MySQL 5.0下载页面。
@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。无论是企业管理器还是Management Studio,IDE都比我迄今为止所见的MySQL更好。我说“易于使用”是因为我可以在MSSQL中做很多事情,而MySQL没有同行。在MySQL中,我不知道如何仅通过查看查询计划或查看统计信息来优化查询。MSSQL中的索引调整向导可以对丢失或放错哪些索引进行大多数猜测。
MySQL的一个缺点是数据库没有最大大小。数据库的大小只会增加,直到填满磁盘为止。想象一下,如果该磁盘正在与其他用户共享数据库,并且突然所有用户的查询都失败了,因为他们的数据库无法增长。我很久以前就向MySQL报告了此问题。我认为还没有解决。
从MSSQL到MySQL语法POV,我花了一些时间与MySQL一起工作,但我发现自己无法做些什么。
在更新过程中,在刷新同一张表的同时,存在对表的双重限制。
另外,UPDATE FROM不起作用,上次我检查它们也不支持Oracle MERGE INTO语法。这对我来说是个秀场止步器,在那之后我不再以为MySQL可以帮助我。