簡體   English   中英

MySql-從18446744073709551615記錄中選擇一條記錄

[英]MySql - select a record from 18446744073709551615 records

我的問題很簡單:假設我在一張表(最大數量)中假設有18446744073709551615個記錄,但是我只想從這些記錄中選擇一個這樣的東西:

SELECT * FROM TABLE1 WHERE ID = 5

1.-結果出現的速度會這么慢嗎?

或者如果我有另一個只有五個記錄的表並且執行相同的查詢

SELECT * FROM TABLE2 WHERE ID = 5

2.-結果會以與第一次選擇時相同的速度出現,還是在另一個選擇中更快?

謝謝。

為了簡單起見,我們假設ID列是固定寬度的主鍵。 將在大約64個索引查找中找到它( Wolfram Alpha )。 由於MySQL / InnoDB使用BTree,因此它將略小於磁盤搜索。

在百萬分之一中搜索將使您粗略地查找索引。 在5個值中進行查找將需要3次索引查找 ,並且整個頁面可能適合一個塊。

大多數速度差異將來自從磁盤讀取的數據。 索引分支應該是一個相對較快的操作,從功能上講,一旦將值緩存在RAM中,您就不會注意到差異。 也就是說,第一次從2 個64行中進行選擇時,從旋轉磁盤中讀取數據會有點麻煩,但是如果要重復查詢,則5和2 64行的速度基本相同(甚至忽略查詢緩存)。

沒有第一個將幾乎肯定比第二速度較慢,但可能不是很慢,只要你對ID列的索引。

使用索引,您可以有效地找到滿足條件的第一條記錄,然后所有其他記錄都將在附近(無論如何在索引結構中,不一定是數據區域)。

我想說的是,在數據庫處理能力用盡之前,第一個磁盤存儲用盡的可能性更大:-)

暫無
暫無

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

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