2010-12-12 20 views
0

データベースでレコードを検索している場合は、直接データベースを検索するSQLクエリを作成しているか、データベースからハッシュテーブルにデータ全体を読み込んでから検索していますO(1)時間はより速いですか? この質問は、過去にこのような問題に直面している経験豊富なプログラマーを対象としています。高速検索またはハッシュテーブルを使用するSQLクエリ

+0

確かに、データベースの検索が高速であることは明らかであるか?特に関連するフィールドに索引を付けたと仮定した場合。すべてのデータをコピーしてから検索する方が早いのはなぜですか?データベースは検索テーブルに組み込まれています。 –

答えて

1

データベースへの直接SQLクエリの作成は、すべてのレコードを最初にハッシュテーブルに読み込んで検索するよりはるかに高速です。これは、すべてのレコードを最初にハッシュテーブルにロードしてから検索する時間を節約するだけでなく、第二に、それはまた、ハッシュテーブルが消費する多くのメモリを節約します。

私はこのような状況を経験しました。これがあなたを助けることを願って!

+2

彼らは単一のルックアップだけをしていると仮定します。繰り返しクエリを実行する必要がある場合は、メモリ内がハンドウインドウを獲得します。 –

2

あなたが行の主キーを知っているか検索する列がインデックス化されている場合は、SQLを使用して」検索を行うことは、あなたのテーブルがメモリに収まらない場合は特に。はるかに高速になります。

-1

の場合あなたの答えを見つけるためにベンチマークしなければならないSQLテーブルは索引付けされていません。行数、入出力速度、ネットワーク速度(データベースが除去マシンにある場合)などの多くの要素があるので、一方、質問

への答えは、テーブルのインデックスを作成することは、より良い選択である。ただ、は、DBMSへのDBMSの仕事を残す。

+1

単一のクエリの場合、すべてのデータをアプリケーションに戻すことはほとんどありません。ハッシュテーブルを割り当てて初期化する必要があるのは、SQLサーバーが比較自体を行うよりも速くなる可能性があります。特にテーブルが大きい場合。サーバーは、すべてのデータをクライアントに送信できるよりも速く一致するレコードを見つけることができます。 –

0

Sql Serverデータベースは、ハッシュテーブルより高速で優れています。 重要な理由の1つです ハッシュテーブルは、セカンダリストレージから一度データを読み取り、メモリにロードします。 今、何が起こるかを特定するのは簡単ですか? データを膨大な方法で保存すると、システムが遅くなります。レコードを操作して検索することは困難です.....

0

DBMSは、ハッシュテーブルと比較して、使い勝手の良い環境と考えられています。数千ものレコードで結果を得ようとしている場合は、索引を作成する必要はありません。それは必要に応じて決まります。したがって、3層のアプリケーションを使用してリモートマシンから回答を得ることは非常に簡単です。それは行数、IO速度等に注意を払う。

関連する問題