MySQL如何查找具有给定内容的行?

时间:2012-06-18 21:14:17

标签: mysql select

我想知道MySQL如何在搜索时找到表中的行:

select * from table where field = 'text';

它是否使用特定的搜索算法?它几乎是在表格中查找信息的最快方式吗?或者使用其他算法(如Boyer-Moore)构建搜索宏的工作更快?

3 个答案:

答案 0 :(得分:3)

如果字段上有索引,则数据库通常使用b树进行索引搜索。如果没有索引,则扫描整个表。这描述了MySql中使用的一些技术

http://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html

许多小时的工作都用于优化MySql。利用已经完成的工作,并拒绝重新尝试

答案 1 :(得分:1)

对于该查询,除了搜索该表的每个条目并将其字段列与该字符串进行比较之外,它除此之外什么都不做。

不需要Boyer-Moore,因为它与请求完全相同,而不是询问该字段是否包含该字符串。

答案 2 :(得分:1)

如果您对如何找到这些记录感兴趣,请尝试使用EXPLAIN关键字执行:

EXPLAIN select * from table where field = 'text';

我建议您查看this article以更好地了解后台发生的情况。

如果你能够自己写一些更快的东西,我会感到非常惊讶。您可以查看在相关表格上创建索引以加快选择。