タグ付けされた質問 「index」

ディスクスペースを犠牲にしてクエリの速度を向上させ、挿入/更新を遅くすることができるデータベース構造。ソートされた1つ以上の列のコピーを格納しますが、データを異なる方法で構造化して、より高速なアクセスを可能にします。

3
巨大なテーブルにクラスター化インデックスを作成する簡単な方法
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 そのため、パフォーマンスが大幅に低下していると不満を言っているカスタマーサイトがあります。ひと目見てみると、問題は、Somebody Else(grrrr)がクラスター化インデックスなしで約2,000万件以上のレコードを保持するテーブルを設計したためであることは明らかです。 次に、そのテーブルにクラスター化インデックスを作成しますが、テスト環境ではcreate indexコマンドが1時間実行されており、まだ実行されていません。顧客サイトは24時間年中無休で稼働する作業場であり、インデックスを作成している間は1時間のダウンタイムは許されません。 インデックスを作成するためのブルートフォースの少ない方法で、ジョブをすばやく終了するか、ビジー状態のときにサーバーのパフォーマンスを完全に低下させないスマートな方法で実行しますか? SQL Server Enterprise Editionを使用しています。

7
インデックス戦略に関するガイダンスはどこで入手できますか?
私たちのほとんどは、おそらくデータベースインデックスを使用するのが良いことに同意するでしょう。インデックスが多すぎると、パフォーマンスが実際に低下する可能性があります。 原則として、どのフィールドにインデックスを付ける必要がありますか? どのフィールドにインデックスを付けるべきではありませんか? パフォーマンスの向上ではなく、パフォーマンスの向上を達成するために、インデックスの数が多すぎて十分ではないというバランスを取りながら、インデックスを使用するためのルールは何ですか?
22 index 

2
クエリの種類ごとに個別のインデックスが必要ですか、それとも1つのマルチカラムインデックスが機能しますか?
私はこの質問に対する答えをすでにある程度知っていますが、私は常にトピックについて取り上げる必要があると感じています。 私の基本的な理解は、一般的に言って、特定の時点でクエリ/ソートを行う可能性のあるすべてのフィールドを含む単一のインデックスは有用ではない可能性が高いということです。誰かが考えたように、「まあ、すべてのものをインデックスに入れると、データベースはそれを使って必要なものを見つけることができます」、実際に実行されているクエリの実行計画を見たことがありません。 次のようなテーブルを想像してください。 id int pk/uid name varchar(50) customerId int (foreign key) dateCreated datetime およびフィールドを含む単一のインデックスが表示されるname場合がcustomerIdありdateCreatedます。 しかし、私の理解では、そのようなインデックスは、たとえば次のようなクエリでは使用されません。 SELECT [id], [name], [customerId], [dateCreated] FROM Representatives WHERE customerId=1 ORDER BY dateCreated このようなクエリの場合、より良いアイデアは、フィールドが「最初」であるフィールドcustomerIdとdateCreatedフィールドを含むインデックスになると思われますcustomerId。これにより、このクエリが必要なものを必要な順序ですばやく見つけることができるようにデータが編成されたインデックスが作成されます。 私が見るもう1つのことは、おそらく最初と同じくらい頻繁に、各フィールドの個々のインデックスです。そう、1それぞれにname、customerIdそしてdateCreatedフィールド。 最初の例とは異なり、このタイプの配置は、少なくとも部分的には役立つように思えます。クエリの実行プランは、少なくとものインデックスを使用customerIdしてレコードを選択しているが、dateCreatedフィールドのインデックスを使用してレコードをソートしていないことを示す場合があります。 テーブルの特定のセットに対する特定のクエリに対する具体的な答えは、通常、実行プランが実行することを示していることを確認することであり、そうでない場合はテーブルとクエリの詳細を取得することであるため、これは広範な質問であることを知っていますアカウント。また、クエリの特定のインデックスを維持するオーバーヘッドとは対照的に、クエリが実行される頻度に依存することも知っています。 しかし、私が求めているのはインデックスの一般的な「開始点」であり、頻繁にプルされる特定のクエリとWHERE句またはORDER BY句のフィールドに特定のインデックスを付けるという考えは意味がありますか?
22 sql-server  index 

3
国際データベースの照合を選択する方法は?
さまざまな言語(UTF-8を使用)でデータを格納するデータベースを設計しているので、クエリの結果を表示する最良の方法は、クエリ自体の実行中にユーザーの言語に従って並べることです(複数あるためそれを行う正しい方法)、次のように: SELECT a < b COLLATE "de_DE" FROM test1; これが国際データを処理する正しい方法であると仮定すると、データベース自体にとって最適な照合はどれですか?PostgreSQLのドキュメントによると: C照合とPOSIX照合はどちらも「従来のC」動作を指定します。この動作では、ASCII文字「A」から「Z」のみが文字として扱われ、ソートは文字コードバイト値によって厳密に行われます。 この場合、これが最良の選択だと思いますか、それとも間違っていますか? (ボーナス質問:クエリ自体で照合順序を選択するには遅すぎますか?)。

1
CREATE INDEX…WITH ONLINE = ONが数分にわたってテーブルへのアクセスをブロックするのはなぜですか?
既存のテーブルがあります: CREATE TABLE dbo.ProofDetails ( ProofDetailsID int NOT NULL CONSTRAINT PK_ProofDetails PRIMARY KEY CLUSTERED IDENTITY(1,1) , ProofID int NULL , IDShownToUser int NULL , UserViewedDetails bit NOT NULL CONSTRAINT DF_ProofDetails_UserViewedDetails DEFAULT ((0)) ); このテーブルには150,000,000行があります。システムは24時間365日稼働しているため、定期的にメンテナンスウィンドウが発生することはありません。 テーブルにインデックスを追加したいのですが、SQL ServerのEnterpriseエディションでは、テーブルへの書き込みアクセスをブロックせずにインデックスを追加できるはずです。使用したコマンドは次のとおりです。 CREATE INDEX IX_ProofDetails_ProofID_Etc ON dbo.ProofDetails (ProofID, IDShownToUser) INCLUDE (UserViewedDetails) WITH (ONLINE=ON , ALLOW_ROW_LOCKS=ON , …

3
欠落しているインデックスを盲目的に追加しても大丈夫ですか?
頻繁にSSMSを使用して、インデックスが不足していないかどうか、遅いストアドプロシージャをテストします。「Missing Index(Impact xxx)」というメッセージが表示された場合はいつでも、新しいインデックスを作成するだけです。これにより、私が知る限り、毎回クエリが高速になります。 これを続けるべきではない理由は何ですか?

4
RDBMSで「インデックス」とはどういう意味ですか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 8年前に閉鎖されました。 私はほとんどの開発者が行うようにインデックスを使用します(主に...よく!インデックス)が、インデックスを使用してデータベースを最適化する微妙な方法がたくさんあると確信しています。DBMSの実装に固有のものかどうかはわかりません。 私の質問は次のとおりです。インデックスの使用方法の良い例は何ですか(基本的な明らかな場合を除く)。また、テーブルにインデックスを指定すると、DBMSはどのようにデータベースを最適化しますか?
21 index  rdbms 


2
ビットマップインデックススキャンを使用するクエリプランの「Recheck Cond:」行
これは、コメントから前の質問へのスピンオフです。 Postgres 9.4.4クエリには永遠に時間がかかります PostgreSQL 9.4を使用すると、Recheck Cond:によるクエリプラン出力でビットマップインデックススキャンの後に常に行があるように見えますEXPLAIN。 EXPLAIN参照された質問の出力のように: -> Bitmap Heap Scan on table_three (cost=2446.92..19686.74 rows=8159 width=7) Recheck Cond: (("timestamp" > (now() - '30 days'::interval)) AND (client_id > 0)) -> BitmapAnd (cost=2446.92..2446.92 rows=8159 width=0) -> Bitmap Index Scan on table_one_timestamp_idx (cost=0.00..1040.00 rows=79941 width=0) Index Cond: ("timestamp" > (now() - '30 days'::interval)) …

1
列ストアインデックスの構造は何ですか?
コードネームDenaliが付けられたSQL Server 2012の新機能の1つに、Columnstoreインデックスがあります。 Bツリー構造、リーフレベルとBツリーページのストレージの違い、含まれているフィールドの影響、それらを使用するための最適化、キーの順序など、通常の古い行ストアインデックスについてかなり知っています。 列ストアインデックスの内部情報を得るのに苦労しています。 どのように構成されていますか? Bツリーはありますか?その他の構造はありますか? データはどのように編成されていますか? どの種類の特定の演算子を使用するのが最適ですか? 他のアンチパターンを使用する際に避けるべきものはありますか? それらについて私が知ることができるものの多くは、基本的に「通常の」インデックスの正反対です。つまり、キーの順序付け、含まれるフィールド、非クラスタ化のみです。 どんな洞察も大歓迎です。

4
MySQLの「CREATE INDEX」は線形操作ですか?
私が言いたいのは次のことです: n行を含むテーブルにインデックスを作成するのにt時間がかかる場合。1000*nほぼ1000*t時間をかけて同じテーブルにインデックスを作成します。 私が達成しようとしているのは、はるかに小さいテストデータベースに同じインデックスを作成することで、運用データベースにインデックスを作成するのにかかる時間を見積もることです。
20 mysql  index 

2
式の集約LIKEクエリを高速化するためにインデックスを作成する方法は?
タイトルに間違った質問をしている可能性があります。事実は次のとおりです。 カスタマーサービスの担当者は、Djangoベースのサイトの管理インターフェイスでカスタマールックアップを実行すると、応答時間が遅いことに不満を抱いていました。 Postgres 8.4.6を使用しています。遅いクエリのログを記録し始め、この犯人を発見しました: SELECT COUNT(*) FROM "auth_user" WHERE UPPER("auth_user"."email"::text) LIKE UPPER(E'%deyk%') このクエリは、実行に32秒以上かかります。EXPLAINが提供するクエリプランは次のとおりです。 QUERY PLAN Aggregate (cost=205171.71..205171.72 rows=1 width=0) -> Seq Scan on auth_user (cost=0.00..205166.46 rows=2096 width=0) Filter: (upper((email)::text) ~~ '%DEYK%'::text) これは、Django Adminアプリケーションによって生成されたDjango QuerySetからDjango ORMによって生成されたクエリなので、クエリ自体を制御することはできません。インデックスは論理的なソリューションのようです。これを高速化するためにインデックスを作成しようとしましたが、違いはありません。 CREATE INDEX auth_user_email_upper ON auth_user USING btree (upper(email::text)) 何が間違っていますか?このクエリを高速化するにはどうすればよいですか?

1
mysqldumpはデフォルトでインデックスをエクスポートしますか?
私は、mysqldumpをして少しいじっし、それが輸出指数を(ない場合、私は、思っていたFULLTEXT、INDEXデフォルトでは、...)。私はそれを読んで、このオプションを見つけました: --disable-keys, -K 実際にインデックスをエクスポートすることを示唆しています。しかし、私は自分の解釈を信用したくありません。そして、私はそれが正しいことを確認したいです(または間違っています;-))。誰でもそれを確認できますか?

2
SQL INDEX-仕組み
データベースとSQLに関する私の知識は、ほとんど大学のクラスに基づいています。とにかく、私はデータベースで作業していた会社で数ヶ月(ほぼ1年)過ごしました。 私は数冊の本を読んでいると私は、次のようなデータベースに関するいくつかの研修に参加したMySQL、PostgreSQL、SQLite、OracleともいくつかnonSQL dbのように、私たちMongoDB、Redis、ElasticSearchなど 私が言ったように、私は初心者であり、多くの知識が不足していますが、今日、誰かが私の初心者の知識に完全に反することを話しました。 説明させてください。SQLデータベースを使用Personして、内部にレコードがほとんどない単純なテーブルを作成しましょう。 id | name | age ----------------- 1 | Alex | 24 2 | Brad | 34 3 | Chris | 29 4 | David | 28 5 | Eric | 18 6 | Fred | 42 7 | Greg | 65 8 | Hubert | …
19 index 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.