[解決済み] ストアドプロシージャとビューの違いは何ですか?
質問
いくつかの点で混乱しています。
-
ストアドプロシージャとビューの違いは何ですか?
-
SQL Server では、どのような場合にストアドプロシージャを使用し、どのような場合にビューを使用すればよいのでしょうか。
-
ビューでは、パラメータを渡すことができる動的なクエリを作成することができますか?
-
また、どのような基準でどちらが速いのでしょうか?
-
ビューとストアドプロシージャは、永久にメモリを割り当てるのでしょうか?
-
ビューは仮想テーブルを作成し、プロシージャはマテリアルテーブルを作成するというのはどういう意味ですか?
他にもポイントがあれば教えてください。
解決方法は?
ビューは 仮想 テーブルを使用します。 複数のテーブルをビューで結合し、ビューを使用して、あたかも1つのテーブルからデータが来ているかのように表示することができます。
ストアドプロシージャは、データの更新や挿入、単一の値やデータセットの返送など、パラメータを使用して機能を実行します。
ビューとストアドプロシージャを作成する - には、それぞれをどのような場合に、どのような理由で使用するのかについてのマイクロソフトの情報があります。
2つのテーブルがあるとします。
-
tbl_user
, 列を持つ。user_id
,user_name
,user_pw
-
tbl_profile
, 列を持つ。profile_id
,user_id
,profile_description
もし、これらのテーブルから頻繁にクエリーを実行するのであれば、すべてのSQLを結合するのではなく、次のようなビューを定義することになるでしょう。
CREATE VIEW vw_user_profile
AS
SELECT A.user_id, B.profile_description
FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO
したがって、もし私がクエリ
profile_description
によって
user_id
をすればよいのです。
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
そのコードは、次のようなストアドプロシージャで使用することができます。
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
だから、後で、電話すればいいんです。
dbo.getDesc 25
に対する記述を取得し
user_id
25、ここで
25
はパラメータです。
もちろん、もっと細かい部分もありますが、これはあくまで基本的な考え方です。
関連
-
[解決済み] varchar 値 'simple, ' をデータ型 int に変換する際に変換に失敗しました。
-
[解決済み] "このSqlTransactionは完了しました。もう使用できません。"...設定エラー?
-
[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] ストアドプロシージャのSELECT FROMの方法
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】SQL Server。クエリーは高速ですが、プロシージャから遅い
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み】テキストが切り捨てられた、または1つ以上の文字がターゲットコードページで一致しない アンピボットの主キーを含む
-
[解決済み】使用されるSELECT文は列の数が異なる(REDUX!)
-
[解決済み】警告。Aqua Data Studioの集約や他のSET操作でNull値が排除される。
-
[解決済み] ORA-01790: 式は、対応する式と同じデータ型でなければならないエラーが発生するケース
-
[解決済み] SQL Server サブクエリが 1 つ以上の値を返しました。これは、サブクエリが =, !=, <, <= , >, >= のように続く場合は許可されません。
-
[解決済み] SQL Server - INNER JOIN WITH DISTINCT
-
[解決済み] FROM のサブクエリにはエイリアスが必要です。
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。