就像我們提供的查詢: 從僱員選擇名稱,其中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. 搜索MySQL表的一種結果
- 2. 一種在MySQL數據庫中搜索表格的方法
- 3. 使用列表/網格中的鍵盤進行搜索 - 算法
- 4. 在stl和.net基本庫默認搜索中使用哪種排序算法?
- 5. SortBy在Spark中使用哪種算法?
- 6. Matlab在SVD中使用哪種算法?
- 7. 在InnoDB/MySQL中執行哪些搜索
- 8. 並行搜索算法
- 9. 如何選擇使用哪種搜索表單?
- 10. scipy.optimize.leastsq使用哪種優化算法?
- 11. rnorm函數使用哪種算法
- 12. 找出使用了哪種CRC16算法
- 13. ProtectedData使用哪種加密算法?
- 14. SPARQL中的搜索算法?
- 15. 搜索算法
- 16. 搜索算法
- 17. 使用三種方法在文本中進行模式搜索
- 18. 哪種搜索技術可用於ASP.NET?
- 19. STL的列表使用哪種排序算法:sort()?
- 20. PHP/mysql數組搜索算法
- 21. MySQL搜索算法最佳匹配
- 22. 使用哪種方法搜索海量記錄QueryAsync或SQLite中的查詢
- 23. 使用多行的MySQL查詢搜索
- 24. 在同一表中使用不同搜索的Mysql查詢
- 25. 何時在Sharepoint開發中使用哪種搜索技術?
- 26. Mysql LIKE或FULLTEXT搜索 - 在這裏使用哪一個?
- 27. 有沒有一種算法來找出搜索字符串中的哪些單詞屬於一起?
- 28. 在樹中搜索算法
- 29. 我可以使用哪種算法進行quadrilater/cube檢測?
- 30. Rails的:一個好的搜索算法
非常感謝您的時間:)這是一個很好的解釋:) :) – 2011-04-11 19:04:41