2011-04-11 59 views

回答

8

假設你已經爲id字段建立索引並且它是唯一的。
該算法是一個binary search(有優化和改進,但下面是它背後的一般理論)。

比方說你有一個數字的下面有序列表:
1,45,87,111,405,568,620,945,1100,5000,5102,5238,5349,5520

說你要搜索的號碼5000,有兩種方法。

  1. 掃描整個列表,在這種情況下,您將不得不檢查10個數字(從開始計數直到您達到5000)。
  2. 二進制 - >這裏是步驟: 2a。轉到中間數字(620),因爲5000大於那麼 - >
    2b。你在數字945-5520上也是這樣,中位數是5102因爲5000小於那麼 - >
    2c。去到部分945-5102的中間值,這是1100,因爲它低於5000,去1100-5102之間的部分
    2d。找到了!

這是4對運行10,所以,二進制搜索的複雜性會以同樣的速度時二進制搜索數據呈指數級增長

+0

非常感謝您的時間:)這是一個很好的解釋:) :) – 2011-04-11 19:04:41

1

索引在MySQL中存儲爲B-trees,空間數據類型索引使用R-trees,MEMORY表也支持hash indexes

+0

感謝很多在等待這個快速增長的答案作爲全掃描! – 2011-04-11 18:47:18

0

您可以使用explainprocedure analyse來了解您的查詢是如何由mysql運行的。

如果您想知道它在內部使用什麼樣的算法來查找結果集。我建議你閱讀DBMS如何工作。