問題タブ [database-indexes]

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 投票する
1 に答える
70 参照

sql - これを機能させるには、いくつかのインデックススキームが必要です

Sqlite には、クエリごとに 1 つのインデックスしか使用しないという制限があります。現時点ではその制限に悩まされていますが、挿入速度を競うことができる他のローカル DB エンジンを認識していないため、Sqlite が必要です (ただし、提案は受け付けています)。

100万から1000万行のこの単純なテーブル(とりわけ)があります:

私のデータを見ると、一意の TelemetryId 値が約 2000 あり、一意の TelemetryId ごとに約 25000 行あります。私はこのインデックスを使用しています:

ただし、そのインデックスは、(明らかに) TimestampTicks 制約を渡さないクエリで失敗します。そのインデックスは、TimestampTicks と TelemetryId で個々のインデックスを試行した後のものです。私のテストから、そして を実行した後でもANALYZE、Sqlite は TelemetryId が参照されるたびにそのインデックスしか使用しませんでした。これは、Timestamp 範囲に制限しているクエリでは間違っています。コンボ インデックスの列の順序を逆にすると、以前は高速だったクエリが遅くなります。

これが私のクエリの完全なリストです。それらすべてで機能する索引付けスキームがわかりますか?

0 投票する
1 に答える
3030 参照

sql-server - SQL Server で文字列列の非クラスター化インデックスを作成するにはどうすればよいですか?

これを試してみたところ、役立つメッセージが表示されました

テーブル 'Users' の列 'Username' は、インデックスのキー列として使用するのに無効な型です。

ユーザー名は nvarchar(max) 列です。

0 投票する
1 に答える
804 参照

sql - Sqlite がこの ORDER BY にインデックスを使用しないのはなぜですか?

私はこのクエリを持っています:

そして、私はこのインデックスを持っています:

ただし、インデックスは ORDER BY 句には使用されません。このクエリの説明を取得します。

なぜ B-TREE なのか? インデックスを逆にすると、実際にはパフォーマンスが低下します。そのクエリプランは次のとおりです。

その順序で TelemetryId の使用が許可されない理由がわかりません。このクエリをもっと速くする必要があります。何か助けはありますか?

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

postgresql - Postgre 文字列配列で大文字と小文字を区別しないインデックスを作成する

varchar[]Postgres 9.2 で列 (varchar 配列)を使用していくつかのタグを保存しています。タグで行を取得する際に、クエリで大文字と小文字を区別しないようにしたいと考えています。ただし、UI に表示する大文字と小文字を保持したい (したがって、すべてを小文字として保存することはできません)。

それで、私の質問は、varchar 配列に対して Postgres で大文字と小文字を区別しないインデックスを作成するにはどうすればよいですか? 考えられるアプローチの 1 つは、列に関数 GIN インデックスを作成することです。どうやってそれを行うのですか?他のアプローチはありますか?

0 投票する
1 に答える
60 参照

sql - このクエリを最適化する方法

このクエリは非常に低速です。KeyTable の RID にクラスター化インデックス、RuleTable の RuleId にクラスター化インデックス、RuleTable の RuleId+SubjectId に一意の非クラスター化インデックスがあります。(RuleTableは他にもいろいろなところで使われています)

上記のクエリで、次のようなwhere句を導入すると

実行時間が > 50% 短縮されます。WHEREしかし、問題は、次の方法で句なしで元のテーブル結果を使用することです

このクエリを最適化する方法はありますか? インデックスまたは再帰の実行方法に関するあらゆる種類の提案が役立ちます

0 投票する
0 に答える
69 参照

mysql - 単純なクエリ パラメータを変更すると、MySQL クエリ プラン (説明) が大幅に変更されるのはなぜですか?

「explain」コマンドを使用して MySQL でクエリを調べると、奇妙な状況が発生します。列 "Period"、"X"、および "Y" に 3 つの一意でない単一列インデックスを持つテーブルがあります。これら 3 つの列はすべて、同じ整数データ型を持ちます。次に、次のコマンドを調べます。

1つ目は「インデックス条件を使用; whereを使用」と表示されていますが、2つ目は奇妙なことに「whereを使用」しか表示されていないため、パラメーターを1つ変更すると、クエリ実行でインデックスが削除されるようです。

テーブルには合計約 65000 行、Period 値ごとに約 5000 行あり (バランスがとれています)、最初のクエリは約 2000 行を返し、2 番目のクエリは約 500 行を返します。また、後者の期間値 (201304) は「最後の"物理的にテーブルにあり、前者の値も最初ではないため、期間の値がこの 2 つよりも小さい行と大きい行が多数あります。

元のテーブルは列が多く非常に複雑なので、ここに貼り付けることができません。しかし、インデックスはこの 3 つだけで、クエリはテスト中に使用したものと同じなので、あまり問題にならないことを願っています。

誰かがこれを引き起こす可能性のあるヒントと、私が知らないことを処理する必要があるかどうかを教えてもらえますか? ありがとうございました。

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

mysql - 適切なインデックスを使用していないクエリ、遅い

アプリケーションに次のクエリがあります。

実行に時間がかかりすぎます (2 秒以上)。私は、flight_date、flight_number、airport、airline、および scheme のインデックスを持っています。

それでも、EXPLAIN は次のように報告します。

どのインデックスを作成する必要がありますか?何が欠けていますか?

0 投票する
1 に答える
3102 参照

oracle - Oracleは一時テーブルスペースにないインデックスを作成します

2.000.000.000 行を超える素晴らしいテーブルがあります。そのため、列 1 にインデックスを作成します。

これを実行すると、一時テーブルスペースが使用され、それがいっぱい (最大 20 GB) の場合、作成は中止されます。

インデックスを作成する私の責任はどこにありますか?

0 投票する
7 に答える
21566 参照

php - ORDER BY フィールドにインデックスを追加する必要がありますか?

私はそのようなクエリを持っています

comment_timeフィールドにインデックスを追加する必要がありますか?

また、2 つの日付の間のデータを取得したい場合、どのようにインデックスを作成すればよいですか?

0 投票する
1 に答える
119 参照

sql-server - 一意のクラスター化インデックス - ドロップ/作成せずに非一意にすることはできますか

レプリケーションの問題を引き起こしている一意のクラスター化インデックスがあります (「境界付き更新」を参照してください)。クラスター化されたインデックスを削除する以外に、インデックスを非一意にする方法はありますか?