6

この単純な選択ステートメントで、MySQL と SQL Server のパフォーマンスに劇的な違いがある理由を誰か説明できますか?

SELECT email from Users WHERE id=1

現在、データベースには 3 人のユーザーを持つテーブルが 1 つだけあります。MySQL の時間は平均 0.0003 ですが、SQL Server は 0.05 です。これは正常ですか、それとも MSSQL サーバーが正しく構成されていませんか?

編集:
両方のテーブルは同じ構造を持ち、主キーは に設定されid、MySQL エンジンのタイプは InnoDB です。
でクエリを実行しましWITH(NOLOCK)たが、結果は同じです。

4

3 に答える 3

1

低コストのクエリを診断する際の問題は、固定コストが変動コストを圧倒する可能性があることです。私は MS ファンボーイというわけではありませんが、MS-SQL に精通しているので、主にそれについて説明します。

MS-SQL はおそらく最適化とクエリ解析のオーバーヘッドが多く、インデックスを使用するかどうかを決定したり、統計を調べたりするときに、クエリに固定コストが追加されます。オーバーヘッドを追加する将来の最適化のために大量のデータを実行および保存します

これは、クエリに時間がかかる場合に役立ちますが、単一のクエリをベンチマークすると、結果が遅くなるようです。

于 2012-06-15T15:37:50.073 に答える
0

そのベンチマークに影響を与える可能性のあるいくつかの要因がありますが、最も重要なのはおそらくMySQLがクエリをキャッシュする方法です。

クエリを実行すると、MySQLはクエリのテキストと結果をキャッシュします。同じクエリが再度発行されると、キャッシュから結果が返されるだけで、実際にはクエリが実行されません。

もう1つの重要な要素は、SQL Serverメトリックが、そのレコードをシークしたり、キャッシュからプルしたりするのにかかる時間だけでなく、合計経過時間です。SQL Serverでは、オンにSET STATISTICS TIME ONするともう少し分解されますが、それでも実際には同じように比較しているわけではありません。

最後に、このベンチマークの目的は非常に単純化されたクエリであるため、わかりません。新しいプロジェクトのプラットフォームを比較していますか?選択の基準は何ですか?

于 2012-06-15T17:14:00.193 に答える