私は最近データベースに取り組んでおり、それ以前はデータベースを使用しないスタンドアロン コンポーネントを開発していました。すべての DB 作業で、いくつかの疑問が生じました。プログラミング言語によるファイルからのデータ取得よりも、データベース クエリの方が高速なのはなぜですか。
私の質問をさらに詳しく説明するには-
Name、ID、DOB、Email、Sex のフィールドを持つ Employee というテーブルがあるとします。簡単にするために、これらはすべて固定長の文字列であり、インデックスや主キー、その他の制約はないと仮定します。
テーブルに 100 万行のデータがあるとします。最終的に、このテーブルはディスクのどこかに保存されます。Select Name,ID from Employee where DOB="12/12/1985" というクエリを作成すると、DBMS はファイルからデータを取得して処理し、フィルタリングして、100 万のサブセットである結果を返します。データの行。
ここで、同じ 100 万行をフラット ファイルに格納するとします。各フィールドは、簡単にするために同様に固定長の文字列です。データは、ディスク内のファイルで利用できます。C++、C、C#、または Java でプログラムを作成し、DOB="12/12/1985" の名前と ID を検索する同じタスクを実行すると、ファイル レコードをレコードごとに読み取り、データの各行をチェックします。 DOB="12/12/1985" の場合、一致する場合は、ユーザーに行を提示します。
プログラムによるこの方法は、SQL クエリが結果を返す速度と比較すると遅すぎます。
DBMS も何らかのプログラミング言語で記述されており、クエリの解析などの追加のオーバーヘッドもあると思います。
では、プログラミング言語よりも高速にデータを取得できる DBMS ではどうなるでしょうか?
この質問がこのフォーラムで不適切である場合は、削除してください。ただし、回答が見つかる可能性のあるヒントをいくつか教えてください。
それが助けになるなら、私はSQL Serverを使用します。