web-dev-qa-db-ja.com

SQLチューニングの方法は異なるDBエンジンで同じですか?

私は過去半年間Oracleを使用し、SQLチューニングのいくつかのトリックを学びましたが、現在DBはgreenplumに移行しており、プロジェクトマネージャーは効率のためにOraclesqlで記述されたコードの一部を変更するよう提案しています。

Oracle、postgresql、mysqlなどの異なるDBエンジンでSQLの調整方法が同じであるかどうかに興味がありますか?はいかどうかにかかわらず、なぜですか?どんな提案も歓迎します!

1
Lucy

「トリック」は、DBMSが希望どおりに動作するように説得することです。これらは大きくて複雑なソフトウェアです。 2つは動作しません正確に同じです。したがって、ある人に影響を与えるトリックは、別の人と一緒に機能する場合と機能しない場合があります。

実際に必要な列のみを取得するなどの優れた方法は、どこにでも適用できます。

2
Michael Green

(警告:私は主にMySQLを知っています。)

最も基本的なことの1つは異なります:

  • 多くのベンダーには、行をフェッチできるROWNUMがあります。
  • MySQLのMyISAMは、PRIMARYキーとセカンダリキーの両方のファイルへのバイトオフセットを使用します。
  • MySQLのInnoDB 'クラスター' PRIMARY KEYデータを使用して、ROWNUMを通過しないようにします。二次キーは別の問題です。

その副作用は、「インデックスマージ交差」(1つのクエリで2つのインデックスを使用)は、(MySQLの)複合インデックスを構築するよりも役に立たないことです。

別物:

  • 多くのベンダーは多くのインデックスタイプ(BTree、Hash、Bitなど)を持っています
  • MySQLには(いくつかの例外を除いて)BTreeしかありません-それは非常に用途が広く効率的であるため、実装者は他のインデックスタイプをサポートする価値がないと判断しました。
1
Rick James