MySQLとSQL Serverの違い[終了]


144

私はASP.NET開発者でありMicrosoft SQL Server、私のデータベースのすべてのニーズ(仕事中と個人プロジェクトの両方)に使用しています。

私の個人的なプロジェクトのいくつかについて、LAMPスタックを試すことを検討しています。

主な違いのいくつかは何ですかMySQLとはSQL Server?使用しているストアドプロシージャでは一般的にMySQL

移行を支援するためのアドバイスやリソースはありますか?

両方の経験がある人にとって、不足している機能はありMySQLますか?

回答:


139

注意が必要なことの1つは、SQL ServerとMySQLがSQL構文を実装する方法にかなり深刻な違いがあることです。

これは、さまざまなSQL実装の優れた比較です

たとえば、トップ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

27
oracleも異なります:select * from(select age from person order by ago asc)where rownum <= 3 Come back back ANSI SQL、all is
forvenged

9
ちょうどこれに遭遇しました。すべての違いについて読むと、私はうんざりします。基本は同じですが(少なくとも理解の点では)、詳細は非常に異なります。
JasCav

21
ばかげたコメントかもしれませんが、なぜ1つのSQL言語が存在できないのですか?? ...異なるHTMLがあるのですか?
greatKing 2015

4
@greaterKing HTMLは、委員会/コンソーシアムによる設定された標準であり、SQLは標準です。そうではなく、単なるスクリプト言語であり、唯一の所有者はインタープリターの開発者です。ある意味でJavascriptのようなもので、すべてのブラウザーには独自のJSエンジンと独自のスクリプト解釈方法があります。その言語をある種の連帯にもたらすための努力が行われているのは、コミュニティからの純粋な圧力によってのみです。しかし、人はそれらがすべて非常に似ていてほんのわずかな違いがあることを望みますか
RedactedProfile 2015年

2
T-SQLは、Transact-SQLに変換;)SQL Serverは、言語(T-SQL)を含むが、それは、GUIを使用して全体としてソフトウェアであり、局所的等のネットワークを介して要求を処理
Botond Bertalan

48

ここでのコメントの多くは、実際の声明よりも宗教的な議論のように聞こえます。MySQLとMSSQLの両方で長年働いてきましたが、どちらも優れた製品です。MySQLは主に、作業している環境に基づいて選択します。ほとんどのオープンソースプロジェクトはMySQLを使用しているため、その方向に進む場合はMySQLを選択します。.Netで何かを開発する場合は、MSSQLを選択します。MSSQLが優れているからではなく、ほとんどの人が使用しているためです。私は実際には現在、MySQLとC#でASP.NETを使用するプロジェクトに参加しています。それは完全にうまく働きます。


3
厳密に言えば、MS SQLのようなものはないと思いませんか。存在するのは「MS SQL Server」です。
壊れない2015

私よりあなたが知っていると思います。私は初心者ですが、間違っている場合はお知らせください。MS SQLとまったく同じものはありますか?
2015

2
あなたが何を求めているのか分かりませんか?
レミー

3
それは正しいです。Microsoft SQL Server 2012または使用するバージョン。
レミー

5
今日のプログラミングはすべて頭字語に関するものです。について話している例を見てみましょうLamp Stack。多くの人はおそらくLAMPまたはWAMPとだけ言うでしょう。同様に、Microsoft SQL Serverと言う代わりに、MS SQL ServerからMS SQLからMSSQLに変更しました
ytpillai

23

MySQLがCommon Table Expressions(CTE)/ "with"ステートメントをサポートしていないことについて誰も言及しなかったとは信じられません。それはかなり迷惑な違いです。


CTEと一時/変数テーブルの両方を使用しました。後者の2つよりもCTEを使用する利点は何ですか?
Jared

8
@Jared CTEを使用すると、一時テーブルとその列タイプを定義する必要がないため、コードを読みやすく保つことができます。cteを使用すると、列タイプと名前を指定しなくてもインテリセンスが得られます。
Aleks 2014

9
再帰は、言及が必要な1つの利点です。
ファイズ

2
Mysql

そのため、mysqlは構文上のキャンディーも取得します。
TheLegendaryCopyCoder

15

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


2
myIsamは本当に迅速な応答を目的としており、外部キーのチェックを強制することはありません。もっと深刻なことをするなら、InnoDBエンジンを使ってみてください。私はMS Accessで本当に厄介な問題を抱えていて、そのような無責任のためにそれらを許すことができないので、私はMSのデータベースを優先せず、それらにOSを任せ、オープンソースコミュニティに深刻なビジネスを与えます...必ず何のオラクルが追い越していたので、MySQLの...
ante.sabo

8
十分に公正ですが、AccessベースのMicrosoftデータベースを無視するのはばかげています。Accessはデスクトップデータベースであり、SQL Serverとは何の関係もありません。StackOverflowがSQL Server上で実行されることをご存知ですか?
Jon Galloway、2010

@JonGalloway:こんにちは私は初心者です。厳密に言えば、MS SQLのようなものがあるかどうかを知りたいだけです。MS SQL Serverが存在すると思います。これについて私に説明してください。これは一般的な単語なので、MS SQLとして使用していて、すべての人にとって意味のあるものでした。しかし、私は初心者なので、概念を理解するための用語にこだわっています。MS SQLまたはMS SQL Serverについて話していることを教えてください。
アンブレイカブル2015

1
人々がMSSQL、TSQLと言うとき、それらは通常、製品Microsoft SQL Serverに同梱されているSQLまたはトランザクションSQL(TSQL)言語を意味します。これは見つけるのが難しいことではありません。en.wikipedia.org/wiki/Microsoft_SQL_Serverで
Faiz


7

率直に言って、MSSQLではなくMySQLを使用する理由が1つもわかりません。以前の問題は高額でしたが、SQL Server 2005 Expressは無料で、月額5.00ドル未満でSQLサーバーを使用した完全なホスティングを提供する多くのWebホスティング会社があります。

MSSQLは使いやすく、MySQLにはない多くの機能を備えています。


2
MSSQLよりもMySQLを選択する本当の理由は価格だと思います。確かに、安価なMSSQLホスティングはいくつかありますが、まれであり、多くの場合、ストレージが厳しく制限されています。
クレイグ

21
MySQLでライセンスを取得するのはかなり良い理由だと思います。
マイク博士

3
Group_concatとREGEXPは、SQL ServerでMySQLを使用するのに十分な理由です(2つのライセンスが切り替えられた場合でも)
Michele

1
MySQLを使用するもう1つの理由は、ローカルデータベースが必要でMS SQL Serverを使用する場合、Windowsコンピューターを実行する必要があるためです。これには、より多くのライセンスコストが含まれます。特に、すべてを維持したい場合最新
Pedro Braz 2015

2
MSSQLでMySQLを使用する理由が1つだけではないというのは偏見があり、明らかに不正確だと思うので、反対票を投じました。SQL Server Expressには、MySQLにはない重大な制限があり、重大なプロジェクトでExpressを使用しないため、コストの問題は依然として非常に有効です。最大規模の企業のほとんどは、MSSQLではなくMySQL / MariaDBを選択しました。個人的には、ライセンスやコストの問題だけでなく、私の経験ではMySQLの方がはるかに扱いやすいためです。MySQLは正常に機能する傾向がありますが、MSSQLを使って自分のやりたいことを実行するためにときどき戦っています。
ダリン

7

MySQLのすべてはMSSQLよりも金属に近いところで行われているようで、ドキュメントではそのように扱っています。特に最適化については、さまざまな状況でインデックス、システム構成、およびオプティマイザがどのように相互作用するかを理解する必要があります。

「オプティマイザー」は、よりパーサーです。MSSQLでのクエリプランは、多くの場合驚きです(通常は良いですが、そうでない場合もあります)。MySQLでは、期待どおりに、実行するように要求したことをほぼ実行します。つまり、自分でさまざまな方法を深く理解する必要があります。

優れたトランザクションモデル(デフォルトのMyISAMエンジン)を中心に構築されていません。

ファイルシステムのセットアップが問題です。

すべてのデータベース構成、特にさまざまなキャッシュサイズが問題です。

時には、それを臨時の栄光のイサムと考えるのが最善のようです。コッドと日付はここではそれほど重要ではありません。彼らは恥ずかしがらずにそれを言うでしょう。


3
ただし、最近のMySQLではデフォルトでInnodbに設定されていますが、これは明確化のためです。5.1ぐらいかな。Innodbは、MyISAMによるテーブルレベルのロックではなく、トランザクション、外部キー、および行レベルのロックをサポートしています。
ジョセフハミルトン


4

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

この答えに関与するゆがみに。

「使いやすさ」のコメントについては、違うのがポイントだと思いますが、どちらかを知っていると、もう片方の学習にオーバーヘッドが発生します。


また、グループ化の自動ansiサポート、自動タイムスタンプ列、はるかに単純なページング...
Joel Coehoorn

1
MySQLのタイムゾーンのサポートは大幅に壊れています。これは便利な機能ではないと思います。代わりにアプリケーションで実行してください。
MarkR 2008年

タイムゾーンのサポートに問題はありませんでした。詳細をもう少し詳しく説明してもらえますか、またはリンクを提供してください。
Cebjyre 2008

2
データベースでタイムゾーンのサポートが必要なのはなぜですか?どこでもUTCを使用し、OSのローカルタイムゾーンを使用してフロントエンド/ guiでレンダリングします。
Tiberiu-Ionuț Stan

4

どちらもDBMSのProduct Sqlサーバーは商用アプリケーションですが、MySqlはopensoucesアプリケーションです。どちらの製品にも同様の機能が含まれていますが、mysqlサーバーはエンタープライズソリューションに使用する必要がありますが、mysqlは小規模な実装に適している場合があります。リカバリなどの機能が必要な場合は、レプリケーション、グラナラーセキュリティ、重要なSQLサーバーが必要

MySqlは、SQLサーバーよりもディスク上のスペースが少なく、メモリとCPUの使用量も少ない


3

SQL ServerからMySQLへのデータベースの「移植」について、誰でも何か良い経験がありますか?

これはかなり痛いはずです!MySQLのバージョンを4.xから5.xに切り替えたところ、以前のようにさまざまなステートメントが機能しなくなりました。クエリアナライザーは「改善」されたため、以前はパフォーマンスをチューニングしたステートメントが期待どおりに機能しなくなりました。

500GBのMySQLデータベースでの作業から学んだ教訓:これは微妙なトピックであり、些細なことではありません!


2

@Cebjyre。Enterprise ManagerとManagement StudioのどちらのIDEも、MySQLでこれまでに見たどの製品よりも優れています。MySQLに対応するものがないMSSQLで多くのことができるので、「使いやすい」と言います。MySQLでは、クエリプランを見たり統計を見たりするだけでクエリを調整する方法がわかりません。MSSQLのインデックスチューニングウィザードは、ほとんどの推測作業で、どのインデックスが欠落しているか、配置が間違っているかを調べます。

MySQLの1つの欠点は、データベースの最大サイズがないことです。データベースは、ディスクがいっぱいになるまでサイズが増加します。このディスクが他のユーザーとデータベースを共有していて、データベースが拡張できないために、すべてのクエリが突然失敗したとします。私はずっと前にこの問題をMySQLに報告しました。まだ修正されていないと思います。


2
一方で、元に戻す管理が適切に管理されていないManagement Studioコンソール(テキストが更新されたことを認識していないため、有効なクエリが表示される可能性があります)、およびタブの不足に悩まされています-expansion(mysqlシェルと比較)。両側にマイナスがあります。
Cebjyre 2008

1

MSSQLからMySQL構文のPOVへのMySQLの作業にしばらく時間を費やして、自分ができることには限界があることに気づきました。

更新中に同じテーブルを参照すると、テーブルの更新に奇妙な制限があります。

さらに、UPDATE FROMは機能せず、前回チェックしたところ、Oracle MERGE INTO構文もサポートされていません。これは私にとってはショーストッパーであり、その後はMySQLでどこにでも行くことができるとは考えなくなりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.