我是一名ASP.NET开发人员,他已经用于Microsoft SQL Server
满足我所有的数据库需求(无论是在工作中还是在个人项目中).
我正在考虑为我的一些个人项目试用LAMP堆栈.
MySQL
和之间有哪些主要区别SQL Server
?使用存储过程是一种常见的做法MySQL
吗?
您建议的任何建议或资源可以帮助我切换?
对于那些对两者都有经验的人,是否有任何缺失的功能MySQL
?
您必须注意的一件事是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工作了多年,两者都是很好的产品.我主要根据您正在处理的环境选择MySQL.大多数开源项目都使用MySQL,因此如果您朝着这个方向前进,MySQL就是您的选择.如果你用.Net开发一些东西我会选择MSSQL,不是因为它好多了,而是因为这是大多数人使用的.我实际上目前正在使用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是免费的,并且有很多网络托管公司提供完全托管sql server每月不到$ 5.00.
MSSQL更易于使用,并且具有MySQL中不存在的许多功能.
MySQL中的所有内容似乎都比MSSQL更接近金属,而且文档以这种方式对待它.特别是对于优化,您需要了解索引,系统配置和优化器在各种情况下的交互方式.
"优化器"更像是一个解析器.在MSSQL中,您的查询计划通常是一个惊喜(通常是好的,有时不是).在MySQL中,它几乎完成了你要求它做的事情,就像你期望的那样.这意味着您自己需要深入了解可能采取的各种方式.
不是围绕一个好的TRANSACTION模型(默认的MyISAM引擎)构建的.
文件系统设置是你的问题.
所有数据库配置都是您的问题 - 尤其是各种缓存大小.
有时似乎最好将它视为一种特殊的,美化的isam.Codd和Date在这里没有多大意义.他们会说没有尴尬.
我认为需要注意的一个主要问题是MySQL 5.0之前的版本没有视图,触发器和存储过程.
在MySQL 5.0下载页面中解释了更多这方面的内容.