Diferencias entre MySQL y SQL Server [cerrado]


Soy un ASP.NET desarrollador que ha utilizado Microsoft SQL Server para todas mis necesidades de base de datos (tanto en el trabajo como para proyectos personales).

Estoy considerando probar la pila LAMP para algunos de mis proyectos personales.

¿cuáles son algunas de las principales diferencias entre MySQL y SQL Server? Es el uso de procedimientos almacenados una práctica común en MySQL?

¿Algún consejo o recurso que recomendarías para ayudarme con el cambio?

A aquellos que tienen experiencia con ambos, ¿hay alguna característica faltante de MySQL?

Author: DineshDB, 2008-08-14

12 answers

Una cosa que debe tener en cuenta es las diferencias bastante severas en la forma en que SQL Server y MySQL implementan la sintaxis SQL.

Aquí hay una buena Comparación de Diferentes Implementaciones SQL.

Por ejemplo, echa un vistazo a la sección top-n. En MySQL:

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

En SQL Server (T-SQL):

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC
 132
Author: Jeff Atwood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 08:23:29

Muchos comentarios aquí suenan más como argumentos religiosos que declaraciones de la vida real. He trabajado durante años con MySQL y MSSQL y ambos son buenos productos. Elegiría MySQL principalmente basado en el entorno en el que está trabajando. La mayoría de los proyectos de código abierto usan MySQL, así que si vas en esa dirección MySQL es tu elección. Si desarrolla algo con. Net elegiría MSSQL, no porque sea mucho mejor, sino porque es lo que la mayoría de la gente usa. Actualmente estoy en un proyecto que utiliza ASP.NET con MySQL y C#. Funciona perfectamente bien.

 45
Author: Remy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-25 09:54:22

No puedo creer que nadie haya mencionado que MySQL no soporta Expresiones de Tabla Comunes (CTE) / sentencias "with". Es una diferencia bastante molesta.

 20
Author: ely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-12 19:18:08

Es más probable que MySQL tenga problemas de corrupción de bases de datos, y no los soluciona automáticamente cuando ocurren. He trabajado con MSSQL desde la versión 6.5 y no recuerdo un problema de corrupción de la base de datos teniendo la base de datos fuera de línea. Las pocas veces que he trabajado con MySQL en un entorno de producción, un problema de corrupción de la base de datos tomó toda la base de datos fuera de línea hasta que ejecutamos la magia "por favor arregle mi índice dañado" cosa desde la línea de comandos.

Transacción y diario de MSSQL el sistema, en mi experiencia, maneja casi cualquier cosa, incluido un ciclo de energía o un fallo de hardware, sin corrupción de la base de datos, y si algo se estropea, lo corrige automáticamente.

Esta ha sido mi experiencia, y me encantaría saber que esto se ha arreglado o que estábamos haciendo algo Equivocada.

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

Http://www.google.com/search?q=site%3Abugs.mysql.com+índice+corrupción

 14
Author: Jon Galloway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-20 16:28:51

Francamente, no puedo encontrar una sola razón para usar MySQL en lugar de MSSQL. El problema antes solía ser el costo, pero SQL Server 2005 Express es gratuito y hay muchas empresas de alojamiento web que ofrecen alojamiento completo con sql Server por menos de $5.00 al mes.

MSSQL es más fácil de usar y tiene muchas características que no existen en MySQL.

 7
Author: Abdu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-09 04:51:26

Todo en MySQL parece estar más cerca del metal que en MSSQL, y la documentación lo trata de esa manera. Especialmente para la optimización, deberá comprender cómo interactúan los índices, la configuración del sistema y el optimizador en diversas circunstancias.

El "optimizador" es más un analizador sintáctico. En MSSQL su plan de consulta es a menudo una sorpresa (generalmente bueno, a veces no). En MySQL, hace más o menos lo que le pediste que hiciera, de la manera que esperabas. Lo que significa que usted necesidad de tener una comprensión profunda de las diversas formas en que se podría hacer.

No construido alrededor de un buen modelo de TRANSACCIÓN (motor MyISAM predeterminado).

La configuración del sistema de archivos es su problema.

Toda la configuración de la base de datos es su problema, especialmente varios tamaños de caché.

A veces parece mejor pensar en ello como un isam ad-hoc, glorificado. Codd y Date no tienen mucho peso aquí. Lo dirían sin vergüenza.

 7
Author: dkretz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-30 19:13:13

Creo que una de las principales cosas a tener en cuenta es que las versiones anteriores a MySQL 5.0 no tenían vistas, disparadores y procedimientos almacenados.

Más de esto se explica en la página de descarga de MySQL 5.0.

 5
Author: Jon Limjap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 08:28:30

Ambos son productos de DBMS Sql server es una aplicación comercial, mientras que MySQL es una aplicación opensouces.Ambos productos incluyen características similares, sin embargo sql server se debe utilizar para una solución empresarial, mientras que mysql podría adaptarse a una implementación más pequeña.si necesita características como recuperación,replicación,seguridad granalar y significativa,necesita sql server

MySQL ocupa menos espacios en disco, y usa menos memoria y cpu que sql server

 4
Author: prince,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-08 14:10:06

Cualquier persona tiene alguna buena experiencia con un "puerto" de una base de datos de SQL Server para MySQL?

¡Esto debería ser bastante doloroso! Cambié las versiones de MySQL de 4.x a 5.x y varias declaraciones ya no funcionarían como solían hacerlo. El analizador de consultas fue "mejorado", por lo que las declaraciones que anteriormente se ajustaban para el rendimiento ya no funcionarían como se esperaba.

La lección aprendida al trabajar con una base de datos MySQL de 500 GB: Es un tema sutil y cualquier otra cosa pero trivial!

 3
Author: dlinsin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-14 11:24:57

@ abdu

Lo principal que he encontrado que MySQL tiene sobre MSSQL es soporte de zona horaria - la capacidad de cambiar muy bien entre zonas horarias, respetando el horario de verano es fantástico.

Compare esto:

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                                             |
+-----------------------------------------------------------------+

A las contorsiones involucradas en esta respuesta.

En cuanto al comentario 'más fácil de usar', diría que el punto es que son diferentes, y si conoces uno, habrá una sobrecarga en aprender el otro.

 3
Author: Cebjyre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:37

@Cebjyre. El IDE si Enterprise Manager o Management Studio es mejor que cualquier cosa que he visto hasta ahora para MySQL. Digo 'más fácil de usar' porque puedo hacer muchas cosas en MSSQL donde MySQL no tiene contrapartes. En MySQL no tengo idea de cómo ajustar las consultas simplemente mirando el plan de consulta o mirando las estadísticas. El asistente de ajuste de índices en MSSQL toma la mayor parte del trabajo de conjetura sobre qué índices faltan o están fuera de lugar.

Un defecto de MySQL es que no hay tamaño máximo para una base de datos. La base de datos solo aumentaría de tamaño hasta que llene el disco. Imagínese si este disco está compartiendo bases de datos con otros usuarios y de repente todas sus consultas están fallando porque sus bases de datos no pueden crecer. He reportado este problema a MySQL hace mucho tiempo. No creo que esté arreglado todavía.

 2
Author: Abdu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-09 23:36:18

Pasando algún tiempo trabajando con MySQL desde el punto de vista de la sintaxis de MSSQL a MySQL seguí encontrándome limitado en lo que podía hacer.

Hay límites bizzare para actualizar una tabla mientras se refrena la misma tabla durante una actualización.

Además, LA ACTUALIZACIÓN DE no funciona y la última vez que comprobé que no son compatibles con la COMBINACIÓN DE Oracle EN la sintaxis tampoco. Esto fue un tapón del espectáculo para mí y dejé de pensar que llegaría a cualquier parte con MySQL después de eso.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-23 20:09:37