就像我們提供的查詢: 從僱員選擇名稱,其中id = 23102和sir_name =「raj」; 我想知道使用哪種算法這種搜索將發生?mysql使用哪種算法搜索表中的一行?
3
A
回答
8
假設你已經爲id字段建立索引並且它是唯一的。
該算法是一個binary search(有優化和改進,但下面是它背後的一般理論)。
比方說你有一個數字的下面有序列表:
1,45,87,111,405,568,620,945,1100,5000,5102,5238,5349,5520
說你要搜索的號碼5000,有兩種方法。
- 掃描整個列表,在這種情況下,您將不得不檢查10個數字(從開始計數直到您達到5000)。
- 二進制 - >這裏是步驟: 2a。轉到中間數字(620),因爲5000大於那麼 - >
2b。你在數字945-5520上也是這樣,中位數是5102因爲5000小於那麼 - >
2c。去到部分945-5102的中間值,這是1100,因爲它低於5000,去1100-5102之間的部分
2d。找到了!
這是4對運行10,所以,二進制搜索的複雜性會以同樣的速度時二進制搜索數據呈指數級增長
1
索引在MySQL中存儲爲B-trees
,空間數據類型索引使用R-trees
,MEMORY表也支持hash indexes
。
+0
感謝很多在等待這個快速增長的答案作爲全掃描! – 2011-04-11 18:47:18
2
0
您可以使用explain和procedure analyse來了解您的查詢是如何由mysql運行的。
如果您想知道它在內部使用什麼樣的算法來查找結果集。我建議你閱讀DBMS如何工作。
相關問題
- 1. 哪種搜索算法更喜歡?
- 2. MySQL使用哪種排序算法?
- 3. MySQL:使用MySQL相關搜索的特殊搜索算法
- 4. MySQL搜索算法
- 5. 搜索MySQL表的一種結果
- 6. 一種在MySQL數據庫中搜索表格的方法
- 7. 在stl和.net基本庫默認搜索中使用哪種排序算法?
- 8. 使用列表/網格中的鍵盤進行搜索 - 算法
- 9. Sublime Text使用哪種文件搜索的算法/數據結構
- 10. SortBy在Spark中使用哪種算法?
- 11. ccache中使用哪種緩存算法?
- 12. 在InnoDB/MySQL中執行哪些搜索
- 13. 使用A *搜索算法
- 14. mySQL搜索組合的一種模式?
- 15. 如何在C++中搜索矩陣中的矢量以及哪種算法?
- 16. 哪種搜索更快?
- 17. 並行搜索算法
- 18. 哪個關鍵字搜索算法?
- 19. 如何選擇使用哪種搜索表單?
- 20. ProtectedData使用哪種加密算法?
- 21. MongoDB使用哪種算法_id
- 22. scipy.optimize.leastsq使用哪種優化算法?
- 23. 哪種激發MLIB算法使用?
- 24. 找出使用了哪種CRC16算法
- 25. rnorm函數使用哪種算法
- 26. 使用哪種Multiple-Criteria排序算法?
- 27. NSURLCache使用哪種緩存算法?
- 28. MySQL - 我應該使用哪種哈希算法?
- 29. 搜索中的散列算法用法
- 30. 定義SQL Server使用哪種索引數據結構/算法?
非常感謝您的時間:)這是一個很好的解釋:) :) – 2011-04-11 19:04:41