3

ビューを使用して MySQL 埋め込みクエリを最適化しようとしていますが、効果があるかどうかはわかりません。

SELECT id FROM (SELECT * FROM t);

私はそれを次のように変換したい:

CREATE VIEW v AS SELECT * FROM t; 
SELECT id FROM v;

SQL Server の「インデックス付きビュー」については聞いたことがありますが、MySQL についてはよくわかりません。どんな助けでも大歓迎です。ありがとう!

4

4 に答える 4

2

SQL Server のインデックス付きビューは一般に「マテリアライズド ビュー」と呼ばれますが、MySQL ではサポートされていません。MySQL の VIEW サポートは、他のベンダーと比較してかなり制限されています。制限については、ドキュメントに記載されています

通常のビューは、準備された SQL ステートメントにすぎません。提供した 2 つの例を使用することに違いはありません。場合によっては、ビューから選択するときの WHERE 句がオプティマイザーによって VIEW クエリにプッシュされることがありますが、それは完全に制御できません。

于 2010-06-15T16:20:32.560 に答える
0

ビューの方が速いかもしれません (おそらくそうです) が、テストしてみませんか? または、両方のクエリに対して EXPLAIN を実行して、それらがどのように実行されるかを確認しますか?

于 2010-06-15T08:18:45.430 に答える
0

ほぼ同じです。高速かどうかは、インデックスに依存します。

MySQL はクエリ結果をキャッシュするため、クエリが実行間で同じであり、基になるデータセットが同じである限り (新しいレコードが追加されていない場合)、次のクエリ実行時にキャッシュされた結果が返されます。

于 2010-06-15T08:18:47.790 に答える
0

ビューを取得するたびに select ステートメントが実行されます。

ビューの動作は少し異なります。ビューの作成を参照してください

于 2010-06-15T08:20:23.727 に答える