問題タブ [indexing]
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 - Postgres に特定のインデックスを使用させるにはどうすればよいですか?
Postgres がインデックスを使用するよう強制するにはどうすればよいですか?
sql - 「日付範囲」と「注文 ID」を含む大きなテーブルのクエリに推奨されるインデックス
特定の日付範囲の間に行われた「サイト訪問」のリストを取得するためのクエリ (LINQ to SQL によって作成された) があり、注文が発生しました (orderid は null ではありません)。
クエリに問題はありません。正しいインデックスを作成するためのアドバイスが必要です。実稼働サイトでさまざまな組み合わせを試していたところ、外部キーが切断されるなどの問題が発生しました。パニックの後でそれを修正しましたが、インデックスを再作成する前にアドバイスを求めると思いました。
テーブルは 100 万行に近づいており、ここで役立つインデックスが必要です。このクエリはレポートにのみ使用されるため、非常に高速である必要はありません。他のユーザーのクエリを遅らせないでください (実行中)。
SiteVisitId
現在、ID 整数列である にクラスター化インデックスがあります。
次のうちどれが最も効率的である可能性が最も高いかわかりません。
- にインデックスを作成する
Date
- にインデックスを作成し
Date
、別のインデックスを作成しますOrderId
Date
ANDで「複数列」インデックスを作成するOrderId
- 他の組み合わせ?
また、より効率的かどうかhasOrder
を確認する代わりに、別のビット列を作成する必要があるかどうかも疑問に思っています。OrderId IS NOT NULL
参考までに: KnownReferer は、100 個ほどの既知の HttpReferers のリストを含む単なるテーブルであるため、Google、Yahoo などからのヒット数を簡単に確認できます。
mysql - MySQL-2つのインデックスを作成します。1つだけがSHOWCREATETABLE出力に表示されます
多対多のリンクテーブルがあり、その上に2つの外部キーを設定しようとしています。私はこれらの2つのステートメントを実行します:
実行すると、次のように表示されるSHOW CREATE TABLE address_list_memberships
と思います。
しかし、代わりに私はこれを取得します:
インデックスが1つしかないように見えます。外部キーを作成するたびにMySQLが参照列にインデックスを自動的に作成するというMySQLのドキュメントと矛盾しているようです。
CocoaMySQLやSQLyogなどのGUIツールを使用するか、コマンドラインで実行するかにかかわらず、テーブルに2つのFKを作成するたびに、この1つのインデックスのみに気づきました。
この謎の照明は非常にありがたいです。
sql - Oracle - フィールドに小文字が含まれている場所を選択
Oracle 9.2.0.6 データベースにテーブル users があります。2 つのフィールドは varchar です - last_name と first_name です。
このテーブルに行が挿入されると、名と姓のフィールドはすべて大文字になるはずですが、これら 2 つのフィールドの一部の値は大文字と小文字が混在しています。
小文字を含む姓または名を持つテーブル内のすべての行を表示するクエリを実行したいと考えています。
私はネットを検索して REGEXP_LIKE を見つけましたが、それは oracle の新しいバージョン用であるに違いありません - 私にはうまくいかないようです。
私が試みた別のことは、「abcde...z」を「$$$$$...$」に変換してから、自分のフィールドで「$」を検索することでしたが、もっと良い方法が必要ですか?
前もって感謝します!
sql-server - SQL Server ハッシュ インデックス
CHECKSUM 列タイプを使用して人為的にハッシュ インデックスを作成する場合、ルックアップは実際には O(1) ですか、それともクラスター化インデックスの場合のように O(lg n) ですか? ID 列に基づいて選択するテーブルがあり、ルックアップをできるだけ高速にする必要があります。クラスター化インデックスは最速のオプションですか? O(1) パフォーマンスを提供するものを探しています。
mysql - データベースのインデックスはいつ再構築する必要がありますか?
ここで大規模な低速 SQL クエリのリファクタリングについて読んでいましたが、現在の最高の応答は、クエリが主要な選択にインデックスを使用していることを確認したい Mitch Wheat からのもので、次のように言及しています。
最初に行うことは、アクティブなインデックス メンテナンス ジョブが定期的に実行されていることを確認することです。そうでない場合は、既存のすべてのインデックスを再構築するか、それが不可能な場合は少なくとも統計を更新してください。
私は単なるアマチュア DBA であり、基本的には Java デスクトップ クライアントであり、場合によっては MySQL バックエンドであるいくつかのプログラムをフリーランスで作成しました。システムをセットアップするときに、クエリ対象の列にインデックスを作成する必要があることはわかっています。varchar CaseID と varchar CustName があります。
しかし、私はこのシステムを数か月前にセットアップし、クライアントに操作させたままにしました。データが入力されるにつれてインデックスが成長するはずであり、すべてがまだうまく機能していると思います. しかし、インデックスを定期的に再構築する必要があるのではないかと心配しています。なぜなら、今日、「アクティブなメンテナンス ジョブ」があるべきだと読んだからです。私が設定した唯一のメンテナンス作業は、毎晩のバックアップでした。
データベースに必要な定期的なメンテナンスについて、コミュニティに質問したかったのです。インデックスの再構築は必要ですか? 誰もいじらず、データが数ギガバイト未満である限り、MySQL バックエンドが機能し続けることを信頼できますか?
mysql - MySql インデックス フィル ファクター?
MySql でインデックスを作成するときに、フィル ファクターをどのように指定しますか?
mysql - MySQL-WHERE x INでインデックスを使用する方法()。
このクエリを使用して、{小文字の「a」で始まる名前のクライアント}のすべての従業員を取得しています。
列employees.client_id
はintであり、INDEX client_id (index_id)
。サブクエリは、IDのリストをIMHOが返す必要があります。これは、WHERE句で使用されます。
クエリをEXPLAIN
実行すると、プライマリクエリはインデックスを使用しません(type:ALL
)。しかし、サブクエリ(たとえば)EXPLAIN
から取得したリストを実行すると、に切り替わり、このクエリは50%高速になります。SELECT ... WHERE client_id IN (121,184,501)
EXPLAIN
type:range
サブクエリによって返されるデータのインデックスをクエリに使用させるにはどうすればよいですか?または、このデータを取得するためのより効率的な方法はありますか?(IDリストをアプリケーションサーバーに取得し、それに参加して2番目のクエリを送信すると、ここではさらにコストがかかります)。
前もって感謝します。
mysql - MySQL の 2 列の主キー
私は非常に単純な問題とうまくいく解決策を持っていますが、もっと単純なものを探しています。
複数の値が既存の値と等しい場合に、行がデータベースに追加されないようにしたいと考えています。たとえば、a2=a1 AND b2=b1 の場合、データは拒否されます。a2=a1 のみ、または b2=b1 のみの場合は許可されます。基本的に、両方の値が一致する必要がある主キーのように機能させたいと考えています。
データベースに書き込む前に、検証を通じてこれを実行できることを知っています--ex。* where a='a2' and b='b2' を選択し、結果が得られたときに新しいデータを書き込まないようにします。私がむしろしたいのは、このようなデータを自動的にブロックする、主キーなどの MySQL 設定を有効にすることです。
私は基本的な機能以外の MySQL にあまり詳しくないので、これが簡単である場合は申し訳ありません。一意のインデックスと主キーに関するあらゆる種類のグーグル検索は役に立ちませんでした。
sql - SQL Server クラスター化インデックス - インデックスの順序に関する質問
私は次のようなテーブルを持っています:
keyA と keyB は一緒に一意であり、テーブルの主キーであり、クラスター化インデックスを構成しています。
keyB の可能な値は 5 つですが、keyA の可能な値の数は無制限です。通常、keyB は増加します。
たとえば、次のデータは、どちらのキー列が最初に並べられるかに応じて、2 つの方法で並べ替えることができます。
また
最初にその値でデータを並べ替えることができるように、どのキー列の値が少ないかをクラスター化インデックスに伝える必要がありますか? それとも、どちらを先に注文するか性能的に関係ないですか?