2010-12-12 35 views
0

如果我正在查找數據庫中的記錄,正在編寫一個sql查詢以直接更快地搜索數據庫或正在從數據庫讀取整個數據到一個散列表,然後搜索O(1)時間更快? 這個問題是針對過去遇到這種問題的有經驗的程序員。SQL查詢更快地搜索或使用散列表

+0

當然,顯然在數據庫中搜索更快?特別是如果你認爲你已經在相關領域索引。爲什麼複製所有數據然後搜索會更快?建立數據庫來搜索表格。 – 2010-12-12 16:46:21

回答

1

對數據庫直接進行sql查詢顯然要比將所有記錄讀入哈希表並從中進行搜索要快得多。這不僅可以節省您的時間,將所有記錄首先加載到哈希表中,然後通過它們進行搜索。第二,它也將節省大量的內存,你的哈希表將消耗。

我經歷過這種情況。希望這可以幫助你!

+2

假設他們只進行一次查詢。如果他們需要重複查詢,內存將贏得手中的勝利。 – 2010-12-13 01:59:55

2

如果你知道行或您正在搜索的列的主鍵索引,然後做檢索」使用SQL會快很多。特別是如果你的表不適合到內存中。

-1

如果SQL表沒有被索引,所以你不得不通過基準測試來找到你的答案。由於有很多因素,比如行數,IO速度,網絡速度(如果數據庫在刪除機器上),很難只給一個問題的答案

在另一方面,索引表是一個更好的選擇。只是,離開DBMS的工作,DBMS。

+1

對於單個查詢,將所有數據返回給應用程序(然後必須分配並初始化哈希表)可能比使SQL Server自己進行比較的速度更快。特別是如果桌子很大。服務器可以絕對找到匹配的記錄,而不是將所有數據發送到客戶端。 – 2016-08-09 20:00:11

0

Sql Server數據庫比Hash表更快,更好。 背後的重要原因之一。 散列表從輔助存儲中讀取一次數據,然後加載到內存中。 現在,很容易識別會發生什麼? 通過以巨大的方式存儲數據,系統會很慢。它將很難操縱和檢索記錄.....

0

儘管如此,與散列表相比,DBMS被認爲是非常方便的環境。如果您試圖用數千條記錄獲得結果,那麼您不需要創建索引。這取決於需求。因此,從三層應用程序獲得遠程機器的答案非常容易。它需要關心行數,IO速度等。