programming-languages之数据检索——数据库VS编程语言

dyllove98 阅读:61 2025-05-04 20:05:19 评论:0

我最近一直在使用数据库,在此之前我一直在开发不使用数据库的独立组件。 对于所有的数据库工作,我有几个问题突然出现了。 为什么数据库查询比从文件中检索数据的编程语言更快。

进一步阐述我的问题-

假设我有一个名为 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。

请您参考如下方法:

Why is a database query faster than a programming language data retrieval from a file

这取决于很多因素——网络延迟和磁盘寻道速度是其中两个重要因素。有时从文件中读取更快

在您对在一百万行中查找一行的描述中,数据库通常比在文件中查找更快,因为它对数据采用了索引。 p>

如果您预处理数据文件并为不同的字段提供索引文件,您也可以加快从文件系统查找数据的速度。

注意:数据库通常不是用于此功能,而是因为它们符合 ACID 标准,因此适合在您有多个进程(通常是多台计算机上的许多客户端)同时查询数据库的环境中工作。


标签:编程语言
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号