問題タブ [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.

0 投票する
9 に答える
153977 参照

sql - Postgres に特定のインデックスを使用させるにはどうすればよいですか?

Postgres がインデックスを使用するよう強制するにはどうすればよいですか?

0 投票する
5 に答える
4924 参照

sql - 「日付範囲」と「注文 ID」を含む大きなテーブルのクエリに推奨されるインデックス

特定の日付範囲の間に行われた「サイト訪問」のリストを取得するためのクエリ (LINQ to SQL によって作成された) があり、注文が発生しました (orderid は null ではありません)。

クエリに問題はありません。正しいインデックスを作成するためのアドバイスが必要です。実稼働サイトでさまざまな組み合わせを試していたところ、外部キーが切断されるなどの問題が発生しました。パニックの後でそれを修正しましたが、インデックスを再作成する前にアドバイスを求めると思いました。

テーブルは 100 万行に近づいており、ここで役立つインデックスが必要です。このクエリはレポートにのみ使用されるため、非常に高速である必要はありません。他のユーザーのクエリを遅らせないでください (実行中)。

SiteVisitId現在、ID 整数列である にクラスター化インデックスがあります。

次のうちどれが最も効率的である可能性が最も高いかわかりません。

  • にインデックスを作成するDate
  • にインデックスを作成しDate、別のインデックスを作成しますOrderId
  • DateANDで「複数列」インデックスを作成するOrderId
  • 他の組み合わせ?

また、より効率的かどうかhasOrderを確認する代わりに、別のビット列を作成する必要があるかどうかも疑問に思っています。OrderId IS NOT NULL

参考までに: KnownReferer は、100 個ほどの既知の HttpReferers のリストを含む単なるテーブルであるため、Google、Yahoo などからのヒット数を簡単に確認できます。

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

mysql - MySQL-2つのインデックスを作成します。1つだけがSHOWCREATETABLE出力に表示されます

多対多のリンクテーブルがあり、その上に2つの外部キーを設定しようとしています。私はこれらの2つのステートメントを実行します:

実行すると、次のように表示されるSHOW CREATE TABLE address_list_membershipsと思います。

しかし、代わりに私はこれを取得します:

インデックスが1つしかないように見えます。外部キーを作成するたびにMySQLが参照列にインデックスを自動的に作成するというMySQLのドキュメントと矛盾しているようです。

CocoaMySQLやSQLyogなどのGUIツールを使用するか、コマンドラインで実行するかにかかわらず、テーブルに2つのFKを作成するたびに、この1つのインデックスのみに気づきました。

この謎の照明は非常にありがたいです。

0 投票する
6 に答える
83998 参照

sql - Oracle - フィールドに小文字が含まれている場所を選択

Oracle 9.2.0.6 データベースにテーブル users があります。2 つのフィールドは varchar です - last_name と first_name です。

このテーブルに行が挿入されると、名と姓のフィールドはすべて大文字になるはずですが、これら 2 つのフィールドの一部の値は大文字と小文字が混在しています。

小文字を含む姓または名を持つテーブル内のすべての行を表示するクエリを実行したいと考えています。

私はネットを検索して REGEXP_LIKE を見つけましたが、それは oracle の新しいバージョン用であるに違いありません - 私にはうまくいかないようです。

私が試みた別のことは、「abcde...z」を「$$$$$...$」に変換してから、自分のフィールドで「$」を検索することでしたが、もっと良い方法が必要ですか?

前もって感謝します!

0 投票する
4 に答える
10683 参照

sql-server - SQL Server ハッシュ インデックス

CHECKSUM 列タイプを使用して人為的にハッシュ インデックスを作成する場合、ルックアップは実際には O(1) ですか、それともクラスター化インデックスの場合のように O(lg n) ですか? ID 列に基づいて選択するテーブルがあり、ルックアップをできるだけ高速にする必要があります。クラスター化インデックスは最速のオプションですか? O(1) パフォーマンスを提供するものを探しています。

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

mysql - データベースのインデックスはいつ再構築する必要がありますか?

ここで大規模な低速 SQL クエリのリファクタリングについて読んでいましたが、現在の最高の応答は、クエリが主要な選択にインデックスを使用していることを確認したい Mitch Wheat からのもので、次のように言及しています。

最初に行うことは、アクティブなインデックス メンテナンス ジョブが定期的に実行されていることを確認することです。そうでない場合は、既存のすべてのインデックスを再構築するか、それが不可能な場合は少なくとも統計を更新してください。

私は単なるアマチュア DBA であり、基本的には Java デスクトップ クライアントであり、場合によっては MySQL バックエンドであるいくつかのプログラムをフリーランスで作成しました。システムをセットアップするときに、クエリ対象の列にインデックスを作成する必要があることはわかっています。varchar CaseID と varchar CustName があります。

しかし、私はこのシステムを数か月前にセットアップし、クライアントに操作させたままにしました。データが入力されるにつれてインデックスが成長するはずであり、すべてがまだうまく機能していると思います. しかし、インデックスを定期的に再構築する必要があるのではないかと心配しています。なぜなら、今日、「アクティブなメンテナンス ジョブ」があるべきだと読んだからです。私が設定した唯一のメンテナンス作業は、毎晩のバックアップでした。

データベースに必要な定期的なメンテナンスについて、コミュニティに質問したかったのです。インデックスの再構築は必要ですか? 誰もいじらず、データが数ギガバイト未満である限り、MySQL バックエンドが機能し続けることを信頼できますか?

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

mysql - MySql インデックス フィル ファクター?

MySql でインデックスを作成するときに、フィル ファクターをどのように指定しますか?

0 投票する
6 に答える
13167 参照

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)EXPLAINtype:range

サブクエリによって返されるデータのインデックスをクエリに使用させるにはどうすればよいですか?または、このデータを取得するためのより効率的な方法はありますか?(IDリストをアプリケーションサーバーに取得し、それに参加して2番目のクエリを送信すると、ここではさらにコストがかかります)。

前もって感謝します。

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

mysql - MySQL の 2 列の主キー

私は非常に単純な問題とうまくいく解決策を持っていますが、もっと単純なものを探しています。

複数の値が既存の値と等しい場合に、行がデータベースに追加されないようにしたいと考えています。たとえば、a2=a1 AND b2=b1 の場合、データは拒否されます。a2=a1 のみ、または b2=b1 のみの場合は許可されます。基本的に、両方の値が一致する必要がある主キーのように機能させたいと考えています。

データベースに書き込む前に、検証を通じてこれを実行できることを知っています--ex。* where a='a2' and b='b2' を選択し、結果が得られたときに新しいデータを書き込まないようにします。私がむしろしたいのは、このようなデータを自動的にブロックする、主キーなどの MySQL 設定を有効にすることです。

私は基本的な機能以外の MySQL にあまり詳しくないので、これが簡単である場合は申し訳ありません。一意のインデックスと主キーに関するあらゆる種類のグーグル検索は役に立ちませんでした。

0 投票する
9 に答える
14905 参照

sql - SQL Server クラスター化インデックス - インデックスの順序に関する質問

私は次のようなテーブルを持っています:

keyA と keyB は一緒に一意であり、テーブルの主キーであり、クラスター化インデックスを構成しています。

keyB の可能な値は 5 つですが、keyA の可能な値の数は無制限です。通常、keyB は増加します。

たとえば、次のデータは、どちらのキー列が最初に並べられるかに応じて、2 つの方法で並べ替えることができます。

また

最初にその値でデータを並べ替えることができるように、どのキー列の値が少ないかをクラスター化インデックスに伝える必要がありますか? それとも、どちらを先に注文するか性能的に関係ないですか?