問題タブ [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 - この実行計画は、主なキーを再考する動機になりますか?
私が現在の (雇用主の) 会社に入ったとき、新しいデータベース スキーマが設計されました。これは、作成される、または作成される予定の多くのツールのベースとなります。SQL の知識が限られているため、テーブルはかなり適切に設計されていると思います。私の唯一の懸念は、ほぼすべてのテーブルにマルチパートの主キーがあることです。すべてのテーブルには、少なくとも CustomerId と独自のキーがあります。これらは確かに特定のレコードを定義していますが、複数のキー (ここでは 4 倍について話している) は非常に非効率的であると感じています。
今日、2 つのテーブルを結合し、最初のテーブルから 1 つの文字列フィールドを選択してそれらを区別する単純な繰り返しのクエリで、想像を絶するほどの CPU 使用率が発生していました。
実行計画を確認すると (私は EP ヒーローではありません)、3 つの主要な CPU ポイントがあることに気付きました。インデックスに対する個別の (予想どおり) および 2 つのシーク。個人的には、インデックスのシークは非常に高速であるべきだと思いますが、それぞれのコストの 18% を占めています。これは正常ですか?(4 つの) クラスター化インデックスが原因ですか?
--UPDATE--
クエリは Lucene インデックスの作成に使用されます。これは、ほぼ毎週発生する 1 回限りの処理です (矛盾しているように聞こえますが)。私が見る限り、ここで結果を再利用することはできません。
sql-server - 非数値索引のパフォーマンス
nvarchar(n) 列を SQL Server データベースのクラスター化インデックスとして使用すると、数値 (int) インデックスと比較してパフォーマンスが大幅に低下しますか? また、複合インデックスのパフォーマンスはどのように比較されますか?
sql-server - SQL Server のパフォーマンスとクラスター化インデックス値
フィル ファクター 100% の一意のクラスター化インデックス myId を持つテーブル myTable があります。これはゼロから始まる整数です (ただし、テーブルの ID 列ではありません)。新しいタイプの行をテーブルに追加する必要があります。myId の負の値を使用して、これらの行を区別できるとよいでしょう。
負の値を使用すると、余分なページ分割が発生し、挿入が遅くなりますか?
追加の背景: このテーブルは、異種システムからデータを収集するデータ ウェアハウスの etl の一部として存在します。私は今、新しいタイプのデータに対応したいと考えています。これを行う方法は、この新しいデータに負の ID を予約することです。これにより、自動的にクラスター化されます。これにより、主要なキーの変更やスキーマ内の余分な列も回避できます。
回答の要約: 100% のフィル ファクターは通常、挿入を遅くします。ただし、順次発生する挿入ではなく、順次の負の挿入が含まれます。
indexing - どのフィールドも一緒に使用されていないのに、なぜクラスター化された複合インデックスがあるのでしょうか。
レガシーデータベース(SQL Server 2000)には、次のようなクラスター化インデックスがあります。
私の知る限り、これらのフィールドはいずれもWHERE句で一緒に使用されていません。また、それらのいずれかを一緒に使用する理由も実際にはありません。このようなクラスター化されたインデックスを持つ理由はありますか?
sql - 既存のテーブルで newid() を newsequentialid() に変更する
現在、主キーに newid() を使用しているテーブルがいくつかあります。これにより、大量の断片化が発生しています。そのため、代わりに newsequentialid() を使用するように列を変更したいと思います。
既存のデータはかなり断片化されたままになると思いますが、新しいデータは断片化が少なくなります。これは、PK インデックスを非クラスター化からクラスター化に変更する前に、しばらく待つ必要があることを意味します。
私の質問は、これを行った経験がある人はいますか? 気をつけなければならないことを見落としていることはありますか?
oracle - Oracle の DATE タイプに最適なインデックスのタイプは何ですか?
Oracle での経験に基づいて、DATE 型の列に設定するインデックスの最適な型と設定は何ですか?
- 必ずしもパーティション分割されたインデックスを使用する必要はありません。
- これは、ログの種類のテーブルです。
- 主キーとして一意のIDを気にする必要はありません(実際、ほとんどの場合、日付は一意になるのに十分近いですが、その性質上、一意になることはありません)。
クラスタ インデックスを作成するのは公平でしょうか?
私が興味を持っているのは、SELECT * FROM Log WHERE [Date] > '20-06-2009' ORDER BY [Date] DESC のようなクエリの実行を最適化し、挿入を大幅に遅くしないことです。(ところで、現実の世界では、切り捨てやインデックスの欠落を避けるために、正しい TO_DATE 構文を使用します)
乾杯、
performance - SQL Server 2005 クラスター化インデックス クエリ速度
私たちのサイトはかなりの打撃を受けているため、既存のクエリのいくつかを最適化することを検討しています。
これを調べていると、クラスター化されたインデックスの単純な参照がクエリに含まれている場合、実行プランが約 4 ~ 5 倍高速であるいくつかのクエリに出くわしました...たとえば
これが古いクエリの場合:
SSMS の実行計画によると、次のクエリは 4 倍高速になります。
これがどのようにクエリを高速化するのか理解できないようです。クラスター化されたインデックスはlotIDにありますが、それ自体と比較しているため、これはどのように役立ちますか?
sql - ビューのSQL Serverクラスター化インデックス
非常に複雑な選択クエリからビューを作成しようとしていますが、サブクエリといくつかの集計関数を使用する必要があるため、クラスター化インデックスを配置できません。
クラスター化されたインデックスを取得する必要があります。そうしないと、ビューを使用するクエリに永遠に時間がかかります。どうやらSQLサーバーは、ばかげた量の基準を満たした場合にのみ結果セットを保存します。
ビューのベース テーブルは読み取り専用で、1 日に 1 回の一括インポートによってのみ更新されます。結果をキャッシュできない理由がわかりません。
SQLサーバーにビューの結果をキャッシュさせて、後でクエリできるようにする方法を知っている人はいますか?? あちこちで雪だるま式に変化するような別のテーブル cos を作成したくありません。
前もって感謝します。
sql-server - SQL Server:日時、ASC、またはDESCのクラスター化インデックス
挿入前にDateTime.Now(C#から)に設定された日時フィールドにクラスター化インデックスを持つSQL Serverテーブルがある場合、テーブルの再編成を回避するために、インデックスを昇順または降順にする必要がありますか?
ありがとう。