簡體   English   中英

關系型數據庫如何組織數據?

[英]How does a relational database organize data?

我在想關系數據庫將存儲每個可能的查詢以及要在哈希表中為該查詢返回的值。

因此,如果表中的每個條目都有 5 個屬性,那么您將為出現在應返回該特定條目的任何給定查詢中的 5 個屬性的每個子集制作該元素的副本。 因此,每個單獨的條目將在表中出現 2^5 = 32 次。 對於具有許多條目的大型數據集,這似乎是非常低內存效率的,但它也允許最快的查詢時間。

現實世界的關系數據庫是否有一個混合版本,其中一些查詢/查找的響應時間被折衷以獲得更高的內存效率? 如果是這樣,這將如何實施?

這不是關系數據庫存儲數據的方式。 請記住,它遠不止 2^32,因為您可以使用表達式進行查詢,而不僅僅是對屬性列的引用。 還有作為連接的查詢,這極大地擴展了可能性。

即使您可以存儲所有可能的組合,也將是一種浪費,因為它們中的大多數永遠都不需要。

相反,數據庫通常存儲記錄,其中記錄包括一個表的所有列。 如果您運行一個只需要一些列的查詢,DBMS 仍會獲取整個記錄,而只是忽略您沒有要求的列。 然后它評估查詢中的任何表達式。 最后返回結果集。

MySQL 不使用哈希表來存儲這些記錄,它使用 B+Tree 數據結構,因此通過其主鍵查找記錄需要 O(log n) 時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM