タグ付けされた質問 「view」

別の方法で1つ以上のテーブルのデータを表す仮想テーブル。

2
ビューの実行プランを取得するにはどうすればよいですか?
いくつかのビューを持つスキーマがあります。実行プランをチェックして、適切なインデックスが配置され、使用されていることを確認する必要があります。 どうすればよいですか? 私はむしろからの出力をコピー&ペーストする必要はないだろうshow create view <viewname>にexplain景色の一部が他のビューの上に構築されている、特にとして、これは非常に苦痛になります。

2
SQL Serverがインデックス付きビューの列がNULL可能ではないことを認識できるようにするにはどうすればよいですか?
SQL Server 2008で次のインデックス付きビューが定義されています(テスト目的でgistから作業スキーマをダウンロードできます)。 CREATE VIEW dbo.balances WITH SCHEMABINDING AS SELECT user_id , currency_id , SUM(transaction_amount) AS balance_amount , COUNT_BIG(*) AS transaction_count FROM dbo.transactions GROUP BY user_id , currency_id ; GO CREATE UNIQUE CLUSTERED INDEX UQ_balances_user_id_currency_id ON dbo.balances ( user_id , currency_id ); GO user_id、currency_id、およびtransaction_amountすべてのように定義されているNOT NULLの列dbo.transactions。ただし、Management Studioのオブジェクトエクスプローラーでビュー定義を見ると、ビューの両方の列balance_amountと-able列transaction_countとしてマークさNULLれています。 私はいくつかのディスカッションを調べましたが、これはそれらの中で最も関連性が高く、SQL Serverがビュー列が常にであることをSQL Serverが認識するのに役立つ可能性のある関数のシャッフルを示唆していますNOT NULL。ただし、インデックス付きビューでは集約関数の式(たとえば、ISNULL()over …


1
Oracleのマテリアライズドビュー
マテリアライズドビューはオラクルでどのように実装されていますか?オラクルでマテリアライズドビューを作成しました。私が今見ているのは、仕事のあるかなり普通のテーブルです。マテリアライズドビューはオラクルのテーブルとジョブに変換されますか?
9 oracle  view 

1
最高実行クエリを確認/知る方法
データベースで最も実行回数の多いクエリの統計を収集したいと思います。 そのため、私はクエリを追跡する方法を知っている必要があります。これにより、大きなDBがあるため、ビューまたはマテリアライズドビューを作成して、最も実行回数の多いクエリの結果をキャッシュできます。

2
ビューに権限を付与し、テーブルの選択を拒否する
MySQLユーザーがいて、データベース内の他のテーブルではなく、必要なビューのみを表示したい。次のように、特定のビューでのみこのユーザー権限を付与しました。 GRANT SHOW VIEW ON `myDatabase`.`awesome_view` TO 'thisUser'@'%' show grants;ステートメントを実行すると、期待どおりにこの権限しか表示されません。ただし、このユーザーに、これらのビューに関連するテーブルではなく、ビューだけをクエリしてもらいたいのですが、これを行う方法が見つかりません。ユーザーがビューで選択を行うようにしたい場合、テーブルに対しても選択を許可する必要がありますか、それとも間違っていますか? select残りのテーブルのステートメントを拒否し、コマンドラインで選択を実行しようとすると、次のようになります。 SELECT * FROM myDatabase.fordibenForYouTable; ERROR 1142 (42000): SELECT command denied to user 'thisUser'@'localhost' for table 'fordibenForYouTable' それが本当に欲しいことですが、ビューデータを選択した場合も拒否されました。 テーブルではなくビューのみをユーザーが利用できるようにする方法はありますか?

3
インラインTVFとビューのパフォーマンス
ビューの代わりにインラインTVF(テーブル値関数)を使用しているデータベースがあります。たとえば、TVF [fnCarBrands]内で結合している[車のモデル]と[車のメーカー]という2つのテーブルがあるとします。 これらのTVFは他のTVFから呼び出され、さらに処理とレポートを行います。したがって、関数[fnCarBrands]を受け取り、テーブル[購入年]に結合して、関数[fnCarBrandHistory]を作成します。TVFのいくつかの層についても同様です。 インラインTVFは実際にはテーブルと他のTVFの単なる結合なので、おそらくビューを使用して同じ機能を取得できます。 このように記述されたインラインTVFのパフォーマンスは、ビューとどのように比較されますか?

2
Postgresはビューで選択されていない計算列の計算を実行しますか?
ビューからデータを選択することによるパフォーマンスへの影響を理解しようとしています。ビューの列の1つは、元のテーブルの他のデータの関数です。 計算は、計算された列が選択した列のリストにあるかどうかに関係なく実行されますか? テーブルがあり、ビューがそのように宣言されている場合 CREATE TABLE price_data ( ticker text, -- Ticker of the stock ddate date, -- Date for this price price float8, -- Closing price on this date factor float8 -- Factor to convert this price to USD ); CREATE VIEW prices AS SELECT ticker, ddate, price, factor, price …

3
インデックスに対してDateAdd()によって制約されたビューの1行の推定を改善する方法
Microsoft SQL Server 2012(SP3)(KB3072779)-11.0.6020.0(X64)の使用。 与えられたテーブルとインデックス: create table [User].[Session] ( SessionId int identity(1, 1) not null primary key CreatedUtc datetime2(7) not null default sysutcdatetime()) ) create nonclustered index [IX_User_Session_CreatedUtc] on [User].[Session]([CreatedUtc]) include (SessionId) 次の各クエリの実際の行は310万です。推定行はコメントとして表示されます。 これらのクエリがView内の別のクエリをフィードすると、1行の推定値のため、オプティマイザはループ結合を選択します。 親クエリの結合ヒントを上書きしたり、SPに頼ったりしないように、この基本レベルでの見積もりを改善するにはどうすればよいですか ハードコードされた日付を使用するとうまくいきます: select distinct SessionId from [User].Session -- 2.9M (great) where CreatedUtc > '04/08/2015' -- but …

2
ユニオンビューをより効率的に実行するにはどうすればよいですか?
私はパフォーマンスの理由でアクティブテーブルとアーカイブテーブルに分割し、直接フィールドマッピングを使用して、アーカイブプロセスを毎晩実行する大きなテーブル(数千から数億レコード)を持っています。 コード内のいくつかの場所で、アクティブテーブルとアーカイブテーブルを結合するクエリを実行する必要があります。ほぼ常に1つ以上のフィールド(両方のテーブルにインデックスを配置している)によってフィルター処理されます。便宜上、次のようなビューがあると理にかなっています。 create view vMyTable_Combined as select * from MyTable_Active union all select * from MyTable_Archive しかし、次のようなクエリを実行すると select * from vMyTable_Combined where IndexedField = @val でフィルタリングする前に、ActiveとStoreのすべてに対して結合を行う@valため、パフォーマンスが低下します。 ユニオン@valを作成する前に、ユニオンビューの2つのサブクエリを各フィルターで作成する賢い方法はありますか? それとも、私が目指していることを達成するために提案する他のアプローチがあるかもしれません。つまり、インデックス付きフィールドによってフィルター処理されたユニオンレコードセットを取得する簡単で効率的な方法ですか。 編集:ここに実行計画があります(そして実際のテーブル名がここに表示されます): 奇妙なことに、アクティブテーブルは実際には正しいインデックス(およびRID検索?)を使用していますが、アーカイブテーブルはテーブルスキャンを実行しています!

1
なぜ人々はビューを通じて更新しないようにアドバイスされています
大学時代は、ビューを介してテーブルを更新しないように頭を悩ませられました。また、私が職場に入ったとき、ビューを通じてデータベースを更新しないように言われました。 これを行うと、パフォーマンスに大きな影響がありますか?または、これは上級開発者/ DBAがジュニア担当者に誤った結合で無意識のうちに大混乱を引き起こす可能性があるために、これを行わないように指示するケースです。 編集 私はMSSQL 2000-2008を使用しています(クライアントの詳細によって異なります)

1
Oracleマテリアライズドビューの更新スケジュール
sysdate + 1のような式を指定できることがわかったので、ここに私の質問があります。 Oracleでマテリアライズドビューの更新の正確な時間を指定することは可能ですか? アプリケーションからデータベースを使用している人がいない間に、すべて午前2時に開始することは可能ですか?
8 oracle  view 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.