Различия между MySQL и SQL Server [закрыто]

Я разработчик ASP.NET, который использовал Microsoft SQL Serverдля всех моих потребностей базы данных (как на работе, так и для личных проектов).

Я рассматриваю возможность попробовать стек LAMP для некоторых моих личных проектов.

Каковы некоторые из основных различий между MySQLи SQL Server? Является ли использование хранимых процедур обычной практикой MySQL?

Какой совет или ресурсы вы бы порекомендовали, чтобы помочь мне с переключателем?

Для тех, кто имеет опыт работы с обоими, есть ли какие-то недостающие функции от MySQL?

14.08.2008 03:13:26
12 ОТВЕТОВ
РЕШЕНИЕ

Одна вещь, на которую вам следует обратить внимание - это довольно серьезные различия в том, как 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
139
10.10.2015 08:23:29
и oracle тоже отличается: выберите * from (выберите возраст от человека, упорядоченный по возрасту назад asc), где rownum <= 3 Вернись ANSI SQL, все прощено :)
gbjbaanb 18.09.2008 14:47:27
Просто наткнулся на это. Чтение обо всех различиях заставляет меня съеживаться. Основы одинаковы (по крайней мере, с точки зрения понимания), но особенности очень и очень разные.
JasCav 13.05.2010 18:21:41
может быть, глупый комментарий, но почему не может быть языка 1 sql ?? ... есть другой html ?? ... так почему бы не 1 sql.
greaterKing 13.07.2015 00:04:42
@greaterKing HTML является заданной структурой и стандартом комитета / консорциума, а SQL - нет, это всего лишь язык сценариев, и единственным владельцем является разработчик интерпретатора. В некотором смысле это похоже на Javascript, каждый браузер имеет свой собственный движок JS и свой собственный способ интерпретации скрипта. Только благодаря явному давлению со стороны сообщества предпринимаются попытки привести этот язык к какой-то солидарности. Но,
RedactedProfile 30.11.2015 22:12:54
T-SQL переводится на Transact-SQL;) Sql Server включает в себя язык (T-SQL), но это программное обеспечение в целом, с графическим интерфейсом, обработкой запросов локально и через сеть и т. Д.
Botond Bertalan 19.10.2016 09:08:08

Я думаю, что одной из главных вещей, на которые следует обратить внимание, является то, что версии до MySQL 5.0 не имели представлений, триггеров и хранимых процедур.

Подробнее об этом рассказывается на странице загрузки MySQL 5.0 .

5
10.10.2015 08:28:30

У кого-нибудь есть хороший опыт работы с «портом» базы данных с SQL Server на MySQL?

Это должно быть довольно больно! Я переключил версии MySQL с 4.x на 5.x, и различные операторы больше не работали, как раньше. Анализатор запросов был «улучшен», поэтому операторы, которые ранее были настроены на производительность, теперь не будут работать должным образом.

Урок, извлеченный из работы с базой данных MySQL объемом 500 ГБ: это тонкая тема и все остальное, кроме тривиального!

3
14.08.2008 11:24:57

MySQL, скорее всего, будет иметь проблемы с повреждением базы данных, и он не устраняет их автоматически, когда они случаются. Я работал с MSSQL начиная с версии 6.5 и не помню, чтобы проблема с повреждением базы данных переводила базу данных в автономный режим. Несколько раз, когда я работал с 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

15
20.08.2008 16:28:51
myIsam предназначен для очень быстрых ответов, он не требует принудительной проверки внешнего ключа, чтобы быть быстрее. Попробуйте использовать движок InnoDB, если делаете что-то более серьезное. У меня были некоторые действительно неприятные проблемы с MS Access, и я не могу простить их за такую ​​безответственность, поэтому я не одобряю ни одну из баз данных MS, позволяю им делать операционные системы и даю серьезные дела сообществу открытого исходного кода ... хотя вы не можете уверен в чем-либо, так как Oracle обогнал MySQL ..
ante.sabo 1.09.2010 08:11:05
Справедливо, но глупо игнорировать базы данных Microsoft на основе Access. Доступ к нему является настольной базой данных и не имеет ничего общего с SQL Server. Вы знаете, что StackOverflow работает на SQL Server, верно?
Jon Galloway 1.09.2010 22:59:42
@JonGalloway: Привет, я новичок. Я просто хочу строго знать, есть ли у нас что-нибудь как MS SQL. Я думаю, что существует MS SQL Server. Не могли бы вы разъяснить мне это? Это может быть обычное слово, так что вы могли бы использовать его как MS SQL, и оно имело бы смысл для каждого. Но я новичок, поэтому я немного зациклен на терминологии, чтобы понять эту концепцию. Пожалуйста, дайте мне знать, что вы говорите о MS SQL или MS SQL Server?
Unbreakable 5.07.2015 12:27:28
Когда люди говорят MSSQL, TSQL, они обычно подразумевают язык SQL или Transaction SQL (TSQL), поставляемый с продуктом Microsoft SQL Server. Это не должно быть так сложно выяснить. Читайте на en.wikipedia.org/wiki/Microsoft_SQL_Server
Faiz 3.10.2015 17:42:37
Moayad Abu Rmilah 22.02.2017 08:35:39

Честно говоря, я не могу найти единственную причину использовать MySQL, а не MSSQL. Раньше проблема была дорогой, но SQL Server 2005 Express является бесплатным, и есть много компаний, предоставляющих услуги веб-хостинга, которые предлагают полный хостинг с сервером sql менее чем за 5 долларов в месяц.

MSSQL проще в использовании и имеет множество функций, которых нет в MySQL.

7
9.09.2008 04:51:26
Я думаю, что цена - единственная реальная причина выбрать MySQL вместо MSSQL. Конечно, есть дешевый хостинг MSSQL, но он редко и часто сильно ограничен в хранилище.
Craig 23.11.2008 20:28:02
Я бы сказал, что лицензирование - довольно веская причина для перехода на MySQL.
Dr. Mike 2.09.2013 12:11:50
Group_concat и REGEXP - более чем достаточные причины для использования MySQL поверх SQL Server (даже если две лицензии были переключены)
Michele 24.02.2015 11:51:33
Еще одна причина, по которой я бы выбрал MySQL, заключается в том, что если вам нужна локальная база данных и вы выбираете MS SQL Server, у вас должна быть запущена машина с Windows, что включает в себя больше затрат на лицензирование ... особенно, если вы хотите сохранить все это в курсе
Pedro Braz 15.07.2015 20:24:34
Отказался, потому что я думаю, что это предвзято и, очевидно, неточно сказать, что нет единой причины использовать MySQL вместо MSSQL. SQL Server Express имеет серьезные ограничения, которых нет в MySQL, и ни один серьезный проект не будет использовать Express, что означает, что проблема стоимости все еще остается в силе. Большинство крупнейших компаний выбрали MySQL / MariaDB вместо MSSQL. Лично я бы тоже, не только из-за проблем с лицензированием и стоимостью, но потому что, по моему опыту, с MySQL работать намного проще. MySQL имеет тенденцию просто работать, в то время как я время от времени сражаюсь с MSSQL, чтобы заставить его делать то, что я хочу.
dallin 24.08.2016 17:13:53

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

к искажениям, связанным с этим ответом .

Что касается комментария «проще в использовании», я бы сказал, что дело в том, что они разные, и если вы знаете одно, то изучение другого будет сопряжено с дополнительными затратами.

4
23.05.2017 12:26:37
Кроме того, правильная поддержка ANSI для групп по, автоматические столбцы
Joel Coehoorn 2.10.2008 14:49:01
Поддержка часового пояса в MySQL существенно нарушена, я не думаю, что это полезная функция. Сделайте это в приложении вместо этого.
MarkR 23.11.2008 20:38:32
У меня не было проблем с поддержкой часовых поясов, не могли бы вы рассказать подробнее или дать ссылку, пожалуйста?
Cebjyre 16.12.2008 04:13:20
Зачем вам нужна поддержка часовых поясов в базе данных? Используйте UTC везде и выполняйте рендеринг в интерфейсе пользователя, используя местный часовой пояс ОС.
Tiberiu-Ionuț Stan 14.03.2017 18:11:54

@Cebjyre. IDE Enterprise Manager или Management Studio лучше, чем все, что я видел до сих пор для MySQL. Я говорю «проще в использовании», потому что я могу делать много вещей в MSSQL, где у MySQL нет аналогов. В MySQL я не знаю, как настроить запросы, просто взглянув на план запроса или просмотрев статистику. Мастер настройки индекса в MSSQL выполняет основную работу по предположению о том, какие индексы отсутствуют или находятся не на своем месте.

Одним из недостатков MySQL является отсутствие максимального размера базы данных. База данных будет только увеличиваться в размере, пока не заполнит диск. Представьте себе, если этот диск совместно использует базы данных с другими пользователями, и внезапно все их запросы перестают работать, потому что их базы данных не могут расти. Я уже давно сообщал об этой проблеме в MySQL. Я не думаю, что это все еще исправлено.

2
9.09.2008 23:36:18
С другой стороны, меня раздражает, что консоль управления студии не соблюдает отмены должным образом (возможно иметь действительный запрос, который он задушит, потому что он не понимает, что текст был обновлен), и отсутствие табуляции расширение (по сравнению с оболочкой mysql). Есть минусы с обеих сторон.
Cebjyre 16.12.2008 04:17:53

Потратив некоторое время на работу с MySQL от MSSQL до MySQL с синтаксисом POV, я ограничивался тем, что я мог сделать.

Существуют странные ограничения на обновление таблицы при обновлении той же таблицы во время обновления.

Кроме того, UPDATE FROM не работает, и в прошлый раз я проверял, что они также не поддерживают синтаксис Oracle MERGE INTO. Для меня это был выставочный стопор, и я перестал думать, что после этого доберусь до MySQL.

1
23.11.2008 20:09:37

Все в MySQL, кажется, сделано ближе к металлу, чем в MSSQL, и документация относится к этому так. Специально для оптимизации вам необходимо понять, как индексы, конфигурация системы и оптимизатор взаимодействуют при различных обстоятельствах.

«Оптимизатор» - это скорее парсер. В MSSQL ваш план запроса часто вызывает удивление (обычно хорошо, иногда нет). В MySQL это в значительной степени делает то, что вы просили, так, как вы ожидали. Это означает, что вы сами должны иметь глубокое понимание различных способов, которыми это может быть сделано.

Не построен на хорошей модели TRANSACTION (движок MyISAM по умолчанию).

Настройка файловой системы - ваша проблема.

Ваша конфигурация базы данных - ваша проблема, особенно различные размеры кеша.

Иногда кажется, что лучше всего думать об этом как о прославленном исаме. Кодд и Дэйт не имеют большого веса здесь. Они сказали бы это без смущения.

7
30.12.2011 19:13:13
Современный MySQL по умолчанию использует Innodb, но это просто пояснение. Я думаю после 5.1 или около того. Innodb поддерживает транзакции, внешние ключи и блокировку на уровне строк, в отличие от блокировки на уровне таблиц с MyISAM.
Joseph Hamilton 19.06.2015 17:47:43

Оба являются продуктом СУБД. Сервер Sql является коммерческим приложением, тогда как MySql является приложением с открытым исходным кодом. Оба продукта включают аналогичную функцию, однако сервер sql следует использовать для корпоративного решения, в то время как mysql может подходить для меньшей реализации. Если вам нужна такая функция, как восстановление, Репликация, Granalar безопасность и значимость, вам нужен сервер SQL

MySql занимает меньше места на диске и использует меньше памяти и процессора, чем сервер SQL

4
8.03.2010 14:10:06

Многие комментарии здесь звучат скорее как религиозные аргументы, чем как заявления из реальной жизни. Я работал в течение многих лет с MySQL и MSSQL, и оба являются хорошими продуктами. Я бы выбрал MySQL в основном в зависимости от среды, в которой вы работаете. Большинство проектов с открытым исходным кодом используют MySQL, поэтому, если вы идете в этом направлении, MySQL - ваш выбор. Если вы разрабатываете что-то с .Net, я бы выбрал MSSQL не потому, что это намного лучше, а просто потому, что это то, что использует большинство людей. Я на самом деле в настоящее время в проекте, который использует ASP.NET с MySQL и C #. Работает отлично.

47
25.04.2016 09:54:22
Строго говоря, вы не думаете, что нет ничего похожего на MS SQL. То, что существует, это «MS SQL Server».
Unbreakable 5.07.2015 12:21:48
Я уверен, что вы знаете больше, чем я. Я только новичок, пожалуйста, дайте мне знать, если я ошибаюсь? Есть ли что-нибудь точное как MS SQL?
Unbreakable 5.07.2015 12:25:12
Я не уверен, что вы спрашиваете?
Remy 8.07.2015 07:01:19
Это верно. Microsoft SQL Server 2012 или любую другую версию, которую вы используете.
Remy 8.07.2015 16:14:34
В наши дни программирование - это аббревиатуры. Давайте возьмем пример того, как вы говорите о Lamp Stack. Многие люди, вероятно, просто скажут LAMP или WAMP. Аналогично, вместо того, чтобы говорить «Microsoft SQL Server», мы сделали его «MS SQL Server», «MS SQL - MSSQL»
ytpillai 24.04.2016 15:26:12

Я не могу поверить, что никто не упомянул, что MySQL не поддерживает выражения Common Table Expressions (CTE) / «with». Это довольно раздражающая разница.

23
12.10.2012 19:18:08
Я использовал как CTE, так и таблицы временных / переменных. Какая польза от использования CTE по сравнению с двумя последними?
Jared 12.05.2014 19:36:54
@Jared Использование CTE делает код читабельным, потому что вам не нужно определять временную таблицу и ее типы столбцов, а с помощью cte вы даже получаете intellisense для типа и имени столбца, даже если вы их не указали.
Aleks 21.08.2014 08:22:20
Рекурсия - это одно из преимуществ, о котором нужно упомянуть.
Faiz 3.10.2015 17:29:35
Mysql 8 поддерживает CTE
Ivanzinho 27.08.2018 16:40:38
Так что MySQL теперь также получает синтаксическую конфету.
TheLegendaryCopyCoder 17.01.2019 17:42:38