問題タブ [non-clustered-index]
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-2008 - 非クラスター化インデックスの列の順序を定義する方法
次のようなサブクエリを作成しました。
この部分のパフォーマンスを向上させる非クラスター化インデックスを作成したいと考えています。
ここで 3 つの質問:
- インデックス付きの列の正しい順序は何ですか?
- また、列 A はインデックス付きの列にする必要がありますか、それとも単にインデックスに含める必要がありますか?
- サブクエリなしでこれを書き換えることができますか ( and に注意し
top 1
てorder by desc
ください)、パフォーマンスを向上させることができますか?
編集: クエリは次のとおりです(データ同期プロセスの一部):
sql-server - 主キーは常にSQLサーバーでインデックス化されていますか?
非クラスター化主キー制約が指定されている場合は、主キー列以外の列にクラスター化インデックスを作成できます。 http://msdn.microsoft.com/en-us/library/ms186342.aspx
したがって、上記のことから、主キー以外の列にクラスター化インデックスを作成できます。
また、主キーは非クラスター化主キーまたはクラスター化キーのいずれかである必要があることも伝えていると思います。主キーがインデックス化されていない可能性はありますか?
そのうえ:
UNIQUE 制約を作成すると、一意の非クラスター化インデックスが作成され、既定で UNIQUE 制約が適用されます。テーブルにクラスター化インデックスがまだ存在しない場合は、一意のクラスター化インデックスを指定できます。
これは、一意の制約によってクラスター化インデックスまたは非クラスター化インデックスを作成する必要があるということですか?
sql-server - 非クラスター化インデックスの行ロケーター
Non Clustered Index
「インデックスにNonclustered
は、データ行自体ではなく、実際のデータ行を指すインデックス付きの列と行ロケーターからの値のみが含まれています。これは、クエリエンジンが追加の手順を実行する必要があることを意味します。実際のデータを見つけてください。」
クエリ- についてはよくわかりませんRow Locator
。私はそれが何もないと仮定していますPrimary key
。Row-Locator
行を一意に識別するためにバックグラウンドで何かが起こっています。
sql - インデックスフィールドと含まれるフィールドを持つインデックスのSQLの違い
SQLクエリスクリプトのパフォーマンスを改善していました。例えば:
SQL Management Studioで「実際の実行プランを含める」を使用してこのSQLスクリプトを検索すると、以下のインデックスを追加するように求められます。
ただし、以下のようないくつかのwhere条件を削除すると、次のようになります。
以下のような別の推奨事項があります。
条件は可変なので、どのインデックスを作成する必要がありますか?インデックスが何をするかは理解していますが、インデックスが付けられているフィールドと含まれているフィールドの間の利点はわかりません。最初の推奨インデックスでBOOKIDとLIBRARY_IDがインデックスフィールドにあるのに、2番目の推奨インデックスでBOOKIDとLIBRARY_IDが含まれているフィールドにあるのはなぜですか?違いは何ですか?また、考えられるすべての条件をカバーするためにどちらを使用する必要がありますか?
また、テストでは、それぞれを追加してパフォーマンスをテストしましたが、違いはわかりません。助けていただければ幸いです。
sql - 1つのテーブル内のマルチコンポーズインデックスに関する混乱
私は本のオンライン販売ウェブサイトを持っています、システムには、と呼ばれるテーブルがあり、Order
以下のようないくつかの列があります:
したがって、テーブルには700万を超える行があり、現在、Webページにクエリ条件を追加する作業を行っています。SQLスクリプトは次のようになります。
このスクリプトには、考えられるすべてのクエリ条件が含まれている可能性があります。「含まれる実際の実行プラン」をオンにしてManagement Studioで実行した後、推奨事項では、Order
テーブルにインデックスを作成する必要があると述べています。
ただし、インデックスを作成しようとすると、すでにそこにある他の3つのインデックスが見つかりました。それらは次のとおりです。
上記の3つのインデックスが作成されました。インデックスを作成したい場合、重複を感じたということですが、それらをマージできますか?または、各インデックスは特定のクエリ用であり、テーブルが毎日増加しているため、クエリ以外でどのアプリまたはどのSQLスクリプトを使用しているかを確認できません。何か案が?
sql-server - SQLServerインデックスは変換の問題を引き起こします
2つの列を持つテーブルがあります-何らかの理由でintとしてのIDとnvarcharとして保存された日付です。
非クラスター化インデックスが最近IDフィールドに作成されました。クエリで、日付をnvarcharからdateに変換すると、「式をデータ型datetimeに変換する算術オーバーフローエラー」が発生します。例外。
クエリからidフィールドを削除すると、変換は完全に機能します。同様に、クエリから日付フィールドの変換を削除すると、完全に機能します。インデックスを削除すると、元のクエリは完全に機能します。
私の質問は、ID列のインデックスが、無関係だと思う日付列の変換を台無しにするのはなぜですか?
これについての説明は大歓迎です。そしてクエリは:
sql-server - Sybaseには、Exection Planにインデックスシーク操作(SQL Serverなど)がありますか?
私はSybaseクエリを最適化しようとしているSQLServer開発者です。非クラスターインデックスをシークしようとしていますが、スキャンを続行します。非クラスターインデックスシークを実現する方法が「シーク」であるかどうかをSybaseで確認したいだけです。
以下のようなクエリがあります(*は実際には約32列です)
SELECTt。*FROMdbo.g1_positions t WHERE t.source_date =(select max(source_date)from g1_positions)
以下のように、テーブルに3つの非クラスターインデックス(クラスターインデックスなし)があります
- 列entity_id、bgnref、retnum、source_dateのprimary_keyという名前のインデックス
- 列entity_id、source_dateのidx_entdteという名前のインデックス
- 列bgnref、source_dateのidx_bgndteという名前のインデックス
内部クエリ(maxはidx_entdteでインデックススキャンを実行します)、外部インデックスはデフォルトでテーブルスキャンを実行します。インデックスを強制すると、インデックススキャンが実行され、「データにI/Oサイズ2Kバイトを使用する」によって決定される追加のクエリが実行されます。ページ。データページのMRUバッファ置換戦略を使用。」
私の推測では、これはSQLServerでの「ルックアップ」に相当します。インデックスを強制した後、パフォーマンスの向上が見られません。パフォーマンスを向上させるために何ができるのか疑問に思っていました。
インデックスの作成/削除/変更など、テーブルに変更を加えることはできません。
SQLServerでのルックアップのアイデアを与えるためだけに機能します。
4つのレコードを持つテーブルEmployeeがあるとします。
クエリがEmp_idで非クラスターインデックスを使用する場合、リーフノードに到達し、実際のデータを取得するには、ポインターを使用してヒープ上の実際のデータ(行)を読み取ります。ポインタを使用するこのプロセスは、ルックアップと呼ばれます
sql-server - 同じ列の非クラスター化インデックスとクラスター化インデックス
Stackoverflowでこの投稿に出くわしました。最初の答えは、クラスター化インデックスにはテーブルのすべてのデータがあり、非クラスター化インデックスには列+クラスター化インデックスの場所、またはヒープ上にある場合は行(クラスター化インデックスのないテーブル)のみがあるというようなものです。非クラスター化インデックスはどのようにしてクラスター化インデックスの場所を知ることができますか?これには、Bツリー内のノードとしてソートされた列値のみが含まれ、各ノードは、列がそのノード値を持つ行にピン留めされます。
sql-server - SQLServerが一意でないクラスター化インデックスに4バイト整数を追加するのはなぜですか
非一意の列をクラスター化インデックスおよび非クラスター化インデックスとして定義することができます。ただし、クラスター化インデックスの場合、列が一意として定義されていない場合、SQLServerはインデックス付きの列に4バイトの整数を追加します。これは、2つ以上のレコードがその列の値を持っている場合でも、レコードの「一意性」を内部的に維持するために行われます。非クラスター化インデックスの場合、なぜこの整数が必要ないのですか?
data-mining - DBSCAN をクラスタリング文字列に適用できますか?
プロジェクトはDBSCANを使用して同様の文字列をクラスタリングすることに関係しているため、最終的なsemでプロジェクトを実行するように言われました。DBSCAN を使用してこれを実行できるかどうかを知りたいです。そうであれば、どうすれば同じことを実装できますか。