2012-02-14 7 views
6

一般的にデータベースをよりよく理解しようとすると、特にsqlite3:sqlite3ビューはパフォーマンスに影響しますか?

sqlite3のビューは主に組織的な機能であり、複雑なクエリを一連の小さなものに分解することができます。ビューは実際にそれらを使用するクエリのパフォーマンスに影響しますか?

私は、ビューがスキーマの一部としてデータベース自体に格納されていることに気付きました。ビューはディスクに保存され、従属テーブルが更新されると動的に更新されます。または彼らは要求に応じて評価されていますか?

ありがとうございました。

+0

赤投稿者: "常にアクセスしているデータに対してビューを使用しないようにしてください。一時的なテーブルを作成してそこにデータを挿入すると、ビューの評価によるオーバーヘッドがなくなります。 " あなたはそれをここで見つけることができます:http://katastrophos.net/andre/blog/2007/01/04/sqlite-performance-tuning-and-optimization-on-embedded-systems/これが本当であるかどうかわかりません。 – Joelmob

答えて

9

ビューは常にオンデマンドで実行されるため(sqlite3など)、結果は永続的に保存されません。

パフォーマンスに関しては、特にsqlite3とは話せませんが、クエリパーサ/プランナは各実行時に生SQLを再解析する必要がないため、通常はビューを使用するとオーバーヘッドがわずかになります。これは一度解析し、実行戦略を格納してから、クエリが実際に実行されるたびにそれを使用できます。

これでわかるパフォーマンスの向上は、物事の壮大な計画では一般的に小さくなります。あなたが頻繁に実行している高速クエリの場合にのみ役立ちます。頻繁に実行するクエリが遅い場合、クエリの解析に伴うオーバーヘッドは重要ではありません。ビューは、もちろん、良いレベルの組織を提供します。