問題タブ [query-hints]
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.
sql-server - OPTIMIZEFORUNKNOWNをいつ使用するかについての経験
SQLServer2008の「OPTIMIZEFORUNKNOWN」クエリプランオプションの背後にある理論と見解を読みました。私はそれが十分にうまくいくことを理解しています。
いくつかの限られた実験を行ったところ、ウォームキャッシュを使用すると、10万行を超える場合にのみメリットがあることがわかりました。ただし、これは、結合やフィルタリングなどのない単純なテーブルとクエリで行われました。コールドキャッシュでは、画像の方がはるかに有利であることは間違いありません。
私は現在、前後のベンチングを行うためのプロダクションシステムを持っていません。したがって、誰かがテストの前後に行って、このオプションをいつ使用するか、いつ使用しないかについて、有用な発見をしたかどうかに興味があります。
アップデート:
3つの列、UIDのPK、およびCol2(int)のインデックスを含むテーブルを作成しました。すべての処理はCol2に対して行われました。行数と時間(DATEDIFF * 1000000)が示されています。
sql - Oracleでヒントを最適化して再コンパイルしますか?
これらのSQLServerヒントと同じように機能するヒントはOracleにありますか?
再コンパイル:クエリが実行されるたびに再コンパイルされます(実行プランがパラメーターによって大きく異なる場合)。これは、Oracleのcursor_sharingと比較して最適でしょうか?
最適化:SQLの最初の実行時に別のパラメーターが使用されている場合でも、特定のパラメーターに対してプランを最適化する場合はどうでしょうか。おそらくcursor_sharingでも役立つと思いますか?
sql-server - WITH(FORCESEEK)を使用せずに、クラスター化インデックススキャンの代わりにインデックスシーク+キールックアップを使用するようにSQLServerを取得する
バージョン:SQL Server 2008 R2
データベース:http://msftdbprodsamples.codeplex.com/releases/view/55926のAdventureWorks 2008R2
クエリ:
クエリのヒントがない場合、SQLServerはIOを集中的に使用するクラスター化インデックススキャンを使用します。
クエリヒントを使用すると、SQL Serverはインデックスシーク+キールックアップを選択します。これWITH (FORCESEEK)
は、より高速に完了し、IOに対して500倍親切です。
私の質問は、SQL Serverにクエリのヒントなしでより良い計画を使用させる方法はありますか?おそらくインデックスを追加しますか?または構成パラメーターを変更しますか?それとも、SQL Serverのクエリオプティマイザは無知ですか?
これがhttp://msdn.microsoft.com/en-us/library/bb510478.aspxからの宝石です:
クエリオプティマイザルールと不十分なカーディナリティ推定により、クエリが検索述語としてINまたはLIKEを使用する場合、オプティマイザはインデックスシークではなくテーブルまたはインデックススキャン操作を実行する可能性があります。
oracle - Oracleの複数挿入ステートメント
私のアプリケーションでは、多くのレコードを追加する必要があります。私は次の構成を使用しています:
APPENDとPARALLELのヒントも使用しています。2つの異なるテーブルにデータを挿入していることに注意してください。並列が無視されているようです(DBAが教えてくれました)。それで、それが使用されているかどうかをどうやって知ることができますか?そのような構成でPARALLELヒントを使用することは可能ですか?効果はありますか?
sql - SQLクエリで「HINTS」を使用する
ばかげた質問に聞こえたら申し訳ありませんが、SQL ヒントを長い間使用しておらず、学校の章の復習作業を行っています。頭をそれらに巻き付けるのに苦労しています。
たとえば、私が作成したテストデータベースでオラクルで行った1つの質問は、「毎日のオークションの合計数の上位10%を表示する」でした。私の答えは(うまくいきました):
私が今抱えている問題は、別のクエリでこの出力を達成しようとすることです。先生に尋ねたところ、ヒントを使用するつもりだと彼らは言いました。ヒントを使用してこのクエリを最適化する方法や、より簡単な方法でそれを行う方法を十分に説明していません。
どんな助けでも本当に感謝します
=) みんなありがとう!
sql-server - ORDER BY に関係なく、SELECT TOP は遅い
次の形式で、ビューに対して実行されている SQL Server でかなり複雑なクエリがあります。
Sort
上記のクエリ プランは、 final の直前の操作を示していますSELECT
。これは私が期待するものです。一致するレコードは 35 件のみで、クエリにかかる時間は 2 秒未満です。
しかし、 を追加するTOP 30
と、クエリに約 3 分かかります。使用SET ROWCOUNT
は同じくらい遅いです。
クエリ プランを見ると、結合とフィルターのmyview
前に200 万件以上のレコードがすべて並べ替えられているように見えます。
この "並べ替え" は、クエリ プランで、インデックスのインデックス スキャンsortcode
、メイン テーブルのクラスター化インデックス シーク、およびそれらの間の入れ子になったループとして表示されます。これらはすべて、結合とフィルターの前に行われます。
指定されていない場合のように、 SQL Server をSORT
の直前 に強制するにはどうすればよいですか?TOP
TOP
の構造が問題だとは思いませんが、念のためmyview
、次のようなものです。
ローカルmytable
には数千のレコードがありmytable
、同じ MSSQL インスタンスの他のデータベースには数百万のレコードがあります。両方のテーブルには、それぞれの列にインデックスがあります。sortcode
tsql - ADO トランザクションと READPAST
これが最善の方法かどうかはわかりませんが、より良い方法があれば投稿してください。
ファイルを読み取ってレコードを挿入するアプリケーションがあります。ファイル全体が 1 つのトランザクションで処理されます。
レコードを挿入する前に、テーブルの重複をチェックする必要があります (注: 例外があるため、これをテーブル制約にすることはできません)。
したがって、重複チェックは通常の select ステートメントですが、問題は、現在のトランザクションからコミットされていないレコードを読み取ることです。select ステートメントに READPAST ヒントと READCOMMITTED ヒントを含めましたが、それでもレコードが返されます。
何か案は?
sql - Oracle は DMS で並列実行を利用します (つまり、UPDATE クエリ)。
このリンクでわかるようPARALLEL HINT
に、更新クエリの並列実行をフォークすると機能しないことがあります。
FULL TABLE SCAN
選択するには、 aまたは aを強制する必要さえありますFAST FULL INDEX SCAN
。DML ステートメントではどのように機能しますか?
ディレクティブを使用しましたalter session enable parallel dml;
リンクされたトピックのIOを見ると。読み取り/変更を行っているスレッドは 1 つだけです。
eclipselink - EclipseLink式のジレンマ
クエリ条件を動的に組み合わせるのに非常に便利であることがわかったので、EclipseLink 式を利用しようとしています。
一方、このヒント機能を持つ JPA Query を使用するには、EclipseLink 式ツールを手放す必要があります。
EclipseLink Expression と QueryHint を連携して使用する方法は何ですか?
ReadAllQuery には、取得オプションを設定するための関連するメソッドがいくつかあるように見えましたが、グーグルで検索すると、リポジトリからのソース コードしか見つかりません。