SQL查询更快地搜索或使用散列表

问题描述:

如果我正在查找数据库中的记录,正在编写一个sql查询以直接更快地搜索数据库或正在从数据库读取整个数据到一个散列表,然后搜索O(1)时间更快? 这个问题是针对过去遇到这种问题的有经验的程序员。SQL查询更快地搜索或使用散列表

+0

当然,显然在数据库中搜索更快?特别是如果你认为你已经在相关领域索引。为什么复制所有数据然后搜索会更快?建立数据库来搜索表格。 – 2010-12-12 16:46:21

对数据库直接进行sql查询显然要比将所有记录读入哈希表并从中进行搜索要快得多。这不仅可以节省您的时间,将所有记录首先加载到哈希表中,然后通过它们进行搜索。第二,它也将节省大量的内存,你的哈希表将消耗。

我经历过这种情况。希望这可以帮助你!

+2

假设他们只进行一次查询。如果他们需要重复查询,内存将赢得手中的胜利。 – 2010-12-13 01:59:55

如果你知道行或您正在搜索的列的主键索引,然后做检索”使用SQL会快很多。特别是如果你的表不适合到内存中。

如果SQL表没有被索引,所以你不得不通过基准测试来找到你的答案。由于有很多因素,比如行数,IO速度,网络速度(如果数据库在删除机器上),很难只给一个问题的答案

在另一方面,索引表是一个更好的选择。只是,离开DBMS的工作,DBMS。

+1

对于单个查询,将所有数据返回给应用程序(然后必须分配并初始化哈希表)可能比使SQL Server自己进行比较的速度更快。特别是如果桌子很大。服务器可以绝对找到匹配的记录,而不是将所有数据发送到客户端。 – 2016-08-09 20:00:11

Sql Server数据库比Hash表更快,更好。 背后的重要原因之一。 散列表从辅助存储中读取一次数据,然后加载到内存中。 现在,很容易识别会发生什么? 通过以巨大的方式存储数据,系统会很慢。它将很难操纵和检索记录.....

尽管如此,与散列表相比,DBMS被认为是非常方便的环境。如果您试图用数千条记录获得结果,那么您不需要创建索引。这取决于需求。因此,从三层应用程序获得远程机器的答案非常容易。它需要关心行数,IO速度等。