我最近一直在使用数据库,在此之前我正在开发不使用数据库的独立组件。在所有数据库工作中,我有一些问题浮出水面。为什么数据库查询比从文件中检索数据的编程语言更快。
为了进一步阐述我的问题 -
假设我有一个名为 Employee 的表,其中包含 Name、ID、DOB、Email 和 Sex 字段。为简单起见,我们还将假设它们都是固定长度的字符串,并且它们没有任何索引或主键或任何其他约束。
假设我们在表中有 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。