MySQL与SQL Server的区别

MySQL与SQL Server的区别,mysql,sql-server,tsql,Mysql,Sql Server,Tsql,我是一名开发人员,使用了MicrosoftSQLServer,满足了我所有的数据库需求(包括工作和个人项目) 我正在考虑为我的一些个人项目试用这个堆栈 MySQL和sqlserver之间的主要区别是什么?是否在MySQL中使用常见做法 您有什么建议或资源可以帮助我切换吗 对于那些对这两者都有经验的人来说,MySQL是否缺少任何功能?您必须注意的一点是SQLServer和MySQL实现SQL语法的方式存在相当严重的差异 这是一个很好的例子 例如,看看top-n部分。在MySQL中: SELECT

我是一名开发人员,使用了
MicrosoftSQLServer
,满足了我所有的数据库需求(包括工作和个人项目)

我正在考虑为我的一些个人项目试用这个堆栈

MySQL
sqlserver
之间的主要区别是什么?是否在
MySQL
中使用常见做法

您有什么建议或资源可以帮助我切换吗


对于那些对这两者都有经验的人来说,MySQL是否缺少任何功能?

您必须注意的一点是SQLServer和MySQL实现SQL语法的方式存在相当严重的差异

这是一个很好的例子

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

SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2
在SQLServer(T-SQL)中:


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

更多这方面的解释见

有没有人有过良好的工作经验 来自SQL Server的数据库的“端口” 到MySQL

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


从使用500GB MySQL数据库中得到的经验教训是:这是一个微妙的主题,除了琐碎的东西之外,什么都可以

MySQL更有可能出现数据库损坏问题,并且在出现问题时不会自动修复。我从6.5版开始使用MSSQL,不记得数据库脱机时出现了数据库损坏问题。有几次我在生产环境中使用MySQL时,数据库损坏问题使整个数据库离线,直到我们从命令行运行神奇的“请修复我损坏的索引”事件

根据我的经验,MSSQL的事务和日志系统几乎可以处理任何事情——包括电源循环或硬件故障——而不会损坏数据库,如果出现问题,它会自动修复

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


坦率地说,我找不到任何理由使用MySQL而不是MSSQL。以前的问题是成本问题,但是SQLServer2005Express是免费的,而且有很多网站托管公司提供SQLServer的完整托管服务,每月的费用不到5美元

MSSQL更易于使用,并具有许多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。无论是Enterprise Manager还是Management Studio,IDE都比我迄今为止看到的MySQL更好。我之所以说“更容易使用”,是因为我可以在MSSQL中做很多MySQL没有对应的事情。在MySQL中,我不知道如何通过查看查询计划或统计数据来调优查询。MSSQL中的索引优化向导主要负责猜测哪些索引丢失或放错了位置


MySQL的一个缺点是数据库没有最大大小。数据库的大小将不断增加,直到填满磁盘。想象一下,如果这个磁盘正在与其他用户共享数据库,而突然他们的所有查询都失败了,因为他们的数据库无法增长。我很久以前就向MySQL报告过这个问题。我认为它还没有被修复。

我花了一些时间从MSSQL到MySQL语法POV使用MySQL,我发现自己的能力有限

在更新过程中引用同一个表时,更新一个表有一些奇怪的限制


另外,从更新不起作用,上次我检查时,它们也不支持Oracle合并到语法。这对我来说是一个阻碍,我不再认为在那之后我会用MySQL取得任何进展。

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

“优化器”更像是一个解析器。在MSSQL中,您的查询计划通常是一个惊喜(通常是好的,有时不是)。在MySQL中,它几乎完成了您要求它做的事情,也就是您期望它做的事情。这意味着你自己需要对各种可能的方式有深刻的理解

不是围绕良好的事务模型(默认MyISAM引擎)构建的

文件系统设置是您的问题

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


有时候,最好把它想象成一个特别的、荣耀的isam。Codd和Date在这里没什么分量。他们会毫不尴尬地说。

都是DBMS的产品Sql server是一个商业应用程序,而MySql是一个opensouces应用程序。这两个产品都包含类似的功能,但是Sql server应该用于企业解决方案,而MySql可能适合较小的实现。如果您需要恢复、复制等功能,granalar安全性和重要性,您需要sql server


MySql比sql server占用更少的磁盘空间,使用更少的内存和cpu

这里的许多评论听起来更像宗教论据,而不是现实生活中的陈述。 我已经在MySQL和MSSQL上工作了多年,它们都是很好的产品。 我选择MySQL主要是基于您所处的环境。大多数开源项目都使用M
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                                             |
+-----------------------------------------------------------------+