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

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

3
MySQLでビューを使用する場合
分析で使用するために複数の結合からテーブルを作成する場合、新しいテーブルを作成するよりもビューを使用する方が適切ですか? ビューを使用したい理由の1つは、データベーススキーマが管理者によってRuby内から開発されており、Rubyに詳しくないことです。テーブルの作成をリクエストできますが、追加の手順が必要であり、新しい結合を開発/テストする際の柔軟性を高めたいです。 SO(Rを使用する場合、SQLを使用する場合)に関連する質問への回答に従ってビューを使用し始めました。トップ投票の答えは、「データが単一のテーブルに収まるまでSQLでデータ操作を行い、残りをRで行う」ことから始まります。 ビューの使用を開始しましたが、ビューに関するいくつかの問題に遭遇しました。 クエリははるかに遅い ビューは、分析に使用する実稼働データベースからバックアップデータベースにダンプされません。 ビューはこの用途に適していますか?もしそうなら、パフォーマンスのペナルティを期待すべきですか?ビューのクエリを高速化する方法はありますか?

7
マテリアライズドビューの代わりにテーブルを使用しないのはなぜですか?
Oracleデータベースは初めてです。私が正しく理解している場合、マテリアライズドビューは結果セットがデータベースの物理テーブルとして保存されているビューであり、このビュー/テーブルは何らかのパラメーターに基づいて更新されます。ビューが物理テーブルとして保存されている場合、最初にテーブルにデータを保存してみませんか?それでは、テーブルの代わりにマテリアライズドビューを使用する利点は何ですか?

4
PostgreSQLのパフォーマンスにとってビューは有害ですか?
以下は、db設計に関する本からの抜粋です(データベース設計の開始ISBN:0-7645-7490-6): ビューを使用する場合の危険は、ビューに対してクエリをフィルタリングし、非常に大きなテーブルの非常に小さな部分を読み取ることです。ビュー自体に対するフィルタリングは、ビュー内のクエリの実行が完了した後に適用されるため、ビュー内でフィルタリングを実行する必要があります。ビューは通常、開発プロセスの高速化に役立ちますが、長期的にはデータベースのパフォーマンスを完全に低下させる可能性があります。 以下は、PostgreSQL 9.5ドキュメントからの抜粋です。 ビューを自由に使用することは、優れたSQLデータベース設計の重要な側面です。ビューを使用すると、テーブル構造の詳細をカプセル化できます。これは、一貫したインターフェイスの背後で、アプリケーションの進化とともに変化する可能性があります。 2つのソースは互いに矛盾しているようです(「ビューを使用して設計しない」対「ビューを使用して設計する」)。 ただし、PGでは、ビューはルールシステムを使用して実装されます。そのため、おそらく(これが私の質問です)ビューに対するフィルタリングは、ビュー内のフィルターとして書き直され、その結果、基礎となるテーブルに対して1つのクエリが実行されます。 私の解釈は正しく、PGはビューに出入りするWHERE句を組み合わせますか?それとも、それらを次々に別々に実行しますか?短い自己完結型の正しい(コンパイル可能な)例はありますか?

5
ネストされたビューは優れたデータベース設計ですか?
私はずっと前にどこかで読んだことがあります。この本は、SQL Serverでネストされたビューを持つことを許可すべきではないと述べています。私たちがそれができない理由がわからないか、間違った記述を覚えているかもしれません。 学生 SELECT studentID, first_name, last_name, SchoolID, ... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 先生方 SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = 1 学校 CREATE …

5
PostgreSQLのSQLのすべてのビューをリストする方法は?
PostgreSQLでSQLコマンドを使用してデータベースのすべてのビューを一覧表示するにはどうすればよいですか? psql \dvコマンドの出力に似たものが欲しいのですが、ビュー名のリストだけが望ましいです。例えば、 SELECT ...; my_view_1 my_view_2 my_view_3 Ubuntu LinuxでPostgreSQL v9.1.4を実行しています。

3
ビューにWHERE句を追加すると、ビューが最適化されますか?
ビューの内側または外側でビューをフィルタリングすると、違いが生じますか? たとえば、これら2つのクエリに違いはありますか? SELECT Id FROM MyTable WHERE SomeColumn = 1 または SELECT Id FROM MyView WHERE SomeColumn = 1 とMyView定義されます SELECT Id, SomeColumn FROM MyTable ソーステーブルがリンクサーバー上にある場合、答えは異なりますか? リンクサーバーから大きなテーブル(44mil行)を2回クエリし、結果の集計を取得する必要があるため、私は尋ねています。データにアクセスするために2つのビューを作成する必要があるかどうか(クエリごとに1つ)、または単一のビューと1つのWHERE句で処理できるかどうかを知りたいです。

4
多くのビューでDEFINERを変更する
更新後にデータベースのバックアップに問題があります。私はシステムをいじって、その理由を探っています。実行した1つのクエリでこの結果が返されました。 Got error: 1449: The user specified as a definer ('cittool'@'%') does not exist when using LOCK TABLES いくつかの調査の後、これらのビューの定義者は、システムから削除された古い開発者アカウントであるようです。この問題が発生したデータベースとビューは非常にまれにしか使用されず、ほとんどはアーカイブ目的で保持されています。 約40個のビューが存在しますが、それらはもはや存在しません。一度にすべての定義者を別のアカウントに変更する簡単な方法はありますか?mysqldumpですべてのビューをファイルに単純にダンプして、そのファイルを編集してビューを再作成できるようにする方法はありますか?
25 mysql  view 

1
実行計画は、高価なCONVERT_IMPLICIT操作を示しています。インデックス作成でこれを修正できますか、またはテーブルを変更する必要がありますか?
where句にこのようなreallyい条件を含む、非常に重要で非常に遅いビューがあります。また、結合はvarchar(13)整数のIDフィールドではなく、グロスで遅い結合であることを認識していますが、このビューを使用する以下の簡単なクエリを改善したいと思います。 CREATE VIEW [dbo].[vwReallySlowView] AS AS SELECT I.booking_no_v32 AS bkno, I.trans_type_v41 AS trantype, B.Assigned_to_v61 AS Assignbk, B.order_date AS dateo, B.HourBooked AS HBooked, B.MinBooked AS MBooked, B.SecBooked AS SBooked, I.prep_on AS Pon, I.From_locn AS Flocn, I.Trans_to_locn AS TTlocn, (CASE I.prep_on WHEN 'Y' THEN I.PDate ELSE I.FirstDate END) AS PrDate, I.PTimeH AS …
24 sql-server  view 

3
Postgresのマテリアライズドビューを置き換える
マテリアライズドビューがあり、Postgres 9.3新しい列で更新したい。ただし、他のマテリアライズドビューもこのビューに依存しており、エラーメッセージは、他のオブジェクトがそれに依存している場合、ビューの削除が不可能であることを示しています。 エラー:他のオブジェクトに依存しているため、マテリアライズドビューlatest_chargesを削除できません また、ドキュメントから、REPLACEキーワードはマテリアライズドビューに対して有効ではないようです。すべての依存オブジェクトを削除し、各オブジェクトを再構築する以外にショートカットはありますか?

4
スキーマの変更がどのように発生したかを判断しますか?
昨日何か悪いことが起こりました。 少し前に作成されたビューは、最終的にレポートを破った誰かによって変更されました。残念ながら。誰かが(故意または無意識のうちに)PRODUCTIONデータベースでこの変更を行いました。 私の質問:この変更を誰(ユーザー名)が行ったかを知ることができる方法(スクリプト/ソフトウェア/フリーウェアなど)があり、そのユーザーの本番データベースへのアクセスを取り消すことができます。 私の質問が不明な場合は、コメントしてください。
21 sql-server  view 


1
SQL Server-ネストされた非決定的なビュースタック内の文字列のローカライズの処理
私がアクセスされる一部の非決定的関数参照しているビューに出くわしたデータベースプロファイリングしながら、毎分1000から2500回をするために、各このアプリケーションのプール内の接続を。SELECTビューからの単純な結果は、次の実行計画をもたらします。 これは、数か月ごとに1行または2行の変更が発生する可能性がある1000行未満のビューの複雑な計画のようです。しかし、次のその他の遵守事項により悪化します。 ネストされたビューは非決定的であるため、インデックスを作成できません 各ビューは複数UDFのを参照して文字列を作成します 各UDFにはUDF、ローカライズされた言語のISOコードを取得するためのネストされたsが含まれています スタック内のビューは、s から返された追加の文字列ビルダーを述語として使用していますUDFJOIN 各ビュースタックはテーブルとして扱われます。つまり、基礎となるテーブルに書き込むためにそれぞれにINSERT/ UPDATE/ DELETEトリガーがあります。 ビューのこれらのトリガーは、これらの文字列構築をより多く参照CURSORSするEXECストアドプロシージャを使用しますUDF。 これはかなり腐っているように見えますが、TSQLの経験は数年しかありません。それも良くなります! これは素晴らしいアイデアだと判断した開発者UDFは、スキーマ固有の文字列から返された文字列に基づいて、格納されている数百の文字列を翻訳できるように、すべてを実行したようです。 スタック内のビューの1つを次に示しますが、それらはすべて等しく劣っています。 CREATE VIEW [UserWKStringI18N] AS SELECT b.WKType, b.WKIndex , CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.I18NString ELSE il.I18nString END AS WKString ,CASE WHEN ISNULL(il.I18NID, N'') = N'' THEN id.IETFLangCode ELSE il.IETFLangCode END AS IETFLangCode ,dbo.User3StringI18N_KeyValue(b.WKType, b.WKIndex, …

1
PostgreSQLはオブジェクトパーミッションをどの順序でチェックしますか?
データベースロール、、ストアドプロシージャとして定義されたuser1関数、something()および次のように作成されたビューを指定します。 CREATE VIEW view1 AS select * from something() そして、この許可が与えられた場合: REVOKE ALL ON FUNCTION something FROM user1 REVOKE SELECT ON view1 FROM user1 実行するSELECT * FROM view1と、エラーが発生しますpermission denied for function something()。 私の質問は、ビューの選択権限を取り消すと、なぜ関数が呼び出されるのですか?私は次のようなものを受け取ることを期待していました: permission denied for relation view1 ありがとうございました!

2
ビューでNOT NULL計算列がNULL可能と見なされるのはなぜですか?
私はテーブルを持っています: CREATE TABLE [dbo].[Realty]( [Id] [int] IDENTITY(1,1) NOT NULL, [RankingBonus] [int] NOT NULL, [Ranking] AS ([Id]+[RankingBonus]) PERSISTED NOT NULL .... ) そしてビュー: CREATE View [dbo].[FilteredRealty] AS SELECT realty.Id as realtyId, ... COALESCE(realty.Wgs84X, ruian_cobce.Wgs84X, ruian_obec.Wgs84X) as Wgs84X, COALESCE(realty.Wgs84Y, ruian_cobce.Wgs84Y, ruian_obec.Wgs84Y) as Wgs84Y, realty.Ranking, ... FROM realty JOIN Category ON realty.CategoryId = …

5
この2000万件のレコードビューをより速くクエリするにはどうすればよいですか?
検索機能では、検索する必要があるすべてのテーブルのレコードを含むビューを使用しています。ビューには、ほぼ2000万件のレコードがあります。このビューに対する検索には時間がかかりすぎています。 このビューのパフォーマンスを改善するためにどこを調べるべきですか? ビューの大まかな定義は次のとおりです。13のテーブルと約30のフィールドが含まれます。 CREATE VIEW [dbo].[v_AllForSearch] AS SELECT FT.firstField AS [firstField] , FT.fld_primary AS [fld_primary] , FT.fld_thirdField AS [thirdField] , FT.fld_fourthField AS [fourthField] , ISNULL(ST.[fld_firstSearchField],'') AS [firstSearchField] , ISNULL(TT.[fld_thirdSearch],'') AS thirdSearch , ISNULL(TT.[fld_fourthSearch],'')AS fourthSearch , ISNULL(TT.[fld_fifthSearch],'')AS fifthSearch , ISNULL(FRT.[fld_sixthSearch],'') As [sixthSearch] , ISNULL(FRT.[fld_seventhSearch],'') AS [seventhSearch] , ISNULL(FRT.[fld_eightSearch],'')AS [eightSearch] , ISNULL(FIT.[fld_nineSearch],'') …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.