数据检索 - 数据库VS编程语言

dav*_*ell 2 rdbms programming-languages

我最近一直在使用数据库,在此之前我正在开发不使用数据库的独立组件.通过所有数据库工作,我遇到了一些问题.为什么数据库查询比从文件中检索编程语言数据更快.

进一步阐述我的问题 -

假设我有一个名为Employee的表,其中包含名称,ID,DOB,电子邮件和性别字段.为简单起见,我们还假设它们都是固定长度的字符串,并且它们没有任何索引或主键或任何其他约束.

想象一下,我们在表中有100万行数据.在一天结束时,该表将存储在磁盘上的某个位置.当我写一个查询选择姓名,来自员工的ID,其中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,如果有任何帮助.

Ode*_*ded 7

为什么数据库查询比从文件中检索编程语言数据更快

这取决于很多方面 - 网络延迟和磁盘搜索速度是其中两个重要因素.有时从文件中读取更快.

在您在一百万行内查找行的描述中,数据库通常比在文件中搜索更快,因为它使用了对数据的索引.

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

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