問題タブ [sql-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1996 参照

sql - SQL Serverビューでのパフォーマンステストの結果、驚くべき結果が得られました。なんで?

最近、パフォーマンスに悪影響を与える可能性のあるいくつかのSQLServerビューにいくつかの変更を加えました。これらのビューに対していくつかのパフォーマンステストを実行して、それらにどのように影響したかを確認することにしました。結果は驚くべきものでした。

下のグラフは、実行したパフォーマンステストの結果を示しています。グラフの内容は次のとおりです。

  • 青い線は、変更が行われる前のビューです。
  • 赤い線は、変更が行われた後のビューを示しています。
  • x軸は、ループ内の反復を表します。
    • 反復ごとに、1000個の新しいレコードが挿入されます(ビューが返されます)。
    • 反復ごとに、テストしているビューからいくつかの選択を行い、結果を平均します。
  • y軸は、ビューが結果を返すのにかかる時間を表します
  • パフォーマンステストされたselectステートメントには、毎回100レコードのみを返すwhere句が含まれていました。(テスト中に各名前に100レコードが挿入されました)。

結果は、私たちが間違いなくパフォーマンスに打撃を与えたことを示していますが、私たちを困惑させるのは、データベースで約40,000レコードに達すると、パフォーマンスが大幅に向上することです。このテストはいくつかの異なるサーバーで実行され、毎回同様の結果が得られます。

なぜこれが起こっているのかについて誰かが洞察を与えることができるかどうか疑問に思います。40,000のレコードレベルを超えたときに、なぜパフォーマンスが大幅に向上するのでしょうか。誰かが以前にこのようなものを見たことがありますか?なんらかの理由で探してみましたが、手ぶらで出てきました。

ビューの調整、インデックスの操作、インデックスの再構築と再編成、実行プランの分析などを試みましたが、これを引き起こす原因はこれまでのところ見つかりませんでした。

パフォーマンスの表示

どんな助けや洞察も大歓迎です。ありがとう。

0 投票する
1 に答える
10699 参照

sql-server - Can I dynamically call a stored procedure from a view?

Specifically, can I call a proc from the current database in a view. I already know about the openrowset hack, so this works, for example:

But I'd like to be able to call the proc from the current DB without hard-coding the name like so:

This doesn't work, unfortunately, as openrowset expects literal strings, rather than variables of any sort.

Regardless of security and performance considerations, is there a workaround? It would make the maintenance of a legacy system much more bearable, as the proc that this view will call connects to a different database depending upon environment (dev, test, prod).

0 投票する
2 に答える
6648 参照

sql-server - ビュー内で UNION 選択を使用する

特定のユーザーがすでにトランザクション テーブルの 1 つを参照しているかどうかを確認する必要があります (約 10 個のトランザクション テーブルがあります)。既に参照されているすべてのユーザーを含む VIEW を使用することを提案しました。その後、DEV チームはそのテーブルを SELECT するだけで、探しているデータがそこにあるかどうかを確認できます。

ビューのクエリは次のとおりです。

現在は機能していますが、私の質問は、これは良い考えですか? この要件では、ストアド プロシージャではなく、スクリプト (またはビュー) のみを提供するよう求められます。各テーブルに対して簡単な IF EXIST() ステートメントを実行して、パラメータ user はどのテーブルにも存在しますが、実際には、チェックできるスクリプトのみにすることを望んでいました (変数は使用しません)。

この要件に対して最適化されたソリューションではない可能性があるため、パフォーマンスへの影響が少ない、この要件を実行するためのより良い方法についてアドバイスをいただけますか。

TIA、ロンメル

0 投票する
3 に答える
12010 参照

sql - SQLビューとWITH句の違い

私は多くの場所を検索しましたが、それについて何も見つからないので、ここの誰かがVIEWとWITHの違いを教えてもらえますか?
私の考えでは、VIEWがスキーマオブジェクトとして保存されることを除いて、VIEWとWITHは同じですが、間違っている可能性があります

0 投票する
1 に答える
185 参照

sql-server - 行がマップされていないSQLビュー

基本的に私が理解しようとしているのは、

表1tbl1

ID | Name

およびtable2tbl2

ID | Name

次に、マッピングテーブルがありますmt

ID | tbl1ID | tbl2ID

ここではデータは実際には重要ではありません。これらの表は例です。

にマップされていないviewすべてのアイテムを取得するを作成する方法。tbl1mt

ちなみに私はMicrosoftSQL-server2008を使用しています。

0 投票する
3 に答える
15786 参照

mysql - Wordpress ユーザーと usermeta - 1 つのテーブルの複数の行を別のテーブルの 1 つの行に結合する

外部アプリケーションからビュー内の行を照会できるように、wp_users テーブルと wp_usermeta テーブルの両方からビューを作成したいと考えています。基本認証の詳細は wp_users (ユーザー名、パスワード、電子メール、ID など) に保存され、その他のフィールドは wp_usermeta テーブルのキーと値のペアに保存されます。

wp_users テーブルは次のように構成されています。

wp_usermeta テーブルは次のように構成されています。

MYSQL VIEW として次のようなデータを取得したいと考えています。

少なくとも wp_users と wp_usermeta の間で内部結合を行う必要があることはわかっていますが、これらの行を結合するには wp_usermeta 内でサブクエリを実行する必要もあります。

もちろん、ユーザー行を取得するためのクエリは非常に簡単です。

メタを行として取得するためのクエリは次のとおりです。

では、これら 2 つのクエリ (u1 のデータと u1.id = m1.userid の行) を結合するにはどうすればよいでしょうか?

0 投票する
2 に答える
40156 参照

sql - SQL Serverは条件付きでVIEWに計算列を追加します

これが私の状況です:

私のテーブルには2つのフィールドがあります:

TaxId値はどこにも格納されていませんが、値は 2 つ (実際には 3 つ) しかありません。

ここで、税込みの新しい価格を計算する計算列がビューに必要です。

何か案が?

私は次のようなもので行きました:

アップデート:

クエリを正常に実行できました。

ここで必要なのは、CalculatedPrice を 10 進数 (15,4) にすることだけです。どうすればそれを設定できますか?

0 投票する
2 に答える
12555 参照

sql - ビュー内の SQL Server SUM 関数

私はフィールドを持つビューを持っています:

価格は計算値です。

私が望むのは、別の計算列 ( totalPrice) を select ステートメントに追加することです。これにより、同じ ID を持つレコードのすべての価格が合計され、結果が得られます (ビューに 4 つの行があると仮定します)。

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

0 投票する
1 に答える
14385 参照

sql - SQL Server で複数の行のデータをマージする方法

これが私の状況です:

TABLE PEOPLE (コード、名前、+ 同じコードを持つレコードで同一のその他のフィールド)

私が望む結果:

VIEW PEOPLE (コード、名前、+ 同じコードを持つレコードと同一のその他のフィールド)

この結果が得られるビューを作成するのを手伝ってもらえますか? ポイントは、同じ「コード」を持つ行をマージし、列「名前」に名前をマージすることです。他のすべてのフィールドは、同じ「コード」を持つ行に対して 100% 同一です。

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

0 投票する
1 に答える
756 参照

haskell - Yesod/persistent の SQL ビュー

http://www.yesodweb.com/book/persistentでは、SQL ビューについて言及されていません。

私は (命令型言語であっても) 不変のデータベース スキーマ設計が非常に好きです。つまり、INSERT と SELECT のみで、UPDATE と DELETE は使用されません。

これには、現在の「状態」を DB 内の履歴の比較的高価な純粋関数にすることを犠牲にして、すべての履歴を保存するという利点があります。

たとえば、「user」テーブルはなく、「user_created」、「user_password_updated」、および「user_deleted」テーブルだけがあり、これらは「user」SQL VIEW に統合され、ユーザーの現在の状態を示します。

Persistent で VIEW を操作するにはどうすればよいですか? Persistent をまったく使用する必要がありますか? (Haskell にとっては皮肉なことに) 私のユースケースでは変更可能な DB に集中しすぎていますか?