就像我们提供的查询: 从雇员选择名称,其中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