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

MySQL如何查找具有给定内容的行?,mysql,select,Mysql,Select,我想知道MySQL在这样搜索时是如何查找表中的行的: select * from table where field = 'text'; 它是否使用特定的搜索算法?这实际上是在表中查找信息的最快方法吗?或者使用另一种算法(如Boyer Moore)构建搜索宏会更快吗?对于该查询,它只能搜索该表的每个条目并将其字段列与该字符串进行比较 不需要Boyer Moore,因为请求的是完全相等的,不询问字段是否包含该字符串。对于该查询,它只能搜索该表的每个条目并将其字段列与该字符串进行比较 不需要Boy

我想知道MySQL在这样搜索时是如何查找表中的行的:

select * from table where field = 'text';

它是否使用特定的搜索算法?这实际上是在表中查找信息的最快方法吗?或者使用另一种算法(如Boyer Moore)构建搜索宏会更快吗?

对于该查询,它只能搜索该表的每个条目并将其字段列与该字符串进行比较


不需要Boyer Moore,因为请求的是完全相等的,不询问字段是否包含该字符串。

对于该查询,它只能搜索该表的每个条目并将其字段列与该字符串进行比较


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

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

EXPLAIN select * from table where field = 'text';
我建议您查看一下,以便更好地了解背景中发生的事情


如果你能自己写一些更快的东西,我会非常惊讶。您可以在有问题的表上创建索引以加快选择速度。

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

EXPLAIN select * from table where field = 'text';
我建议您查看一下,以便更好地了解背景中发生的事情


如果你能自己写一些更快的东西,我会非常惊讶。您可以在有问题的表上创建索引以加快选择速度。

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


优化MySql花了很多时间。利用已经完成的工作,并抵制尝试重新做它

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


优化MySql花了很多时间。利用已经完成的工作,不要尝试重新做它

注意,无论您使用什么外部搜索,它可能不会比在数据库中搜索快,除非在某些边缘情况下。数据库实现(比如MySQL)在提高查找效率方面花费了大量精力。您使用的任何算法仍然必须依赖数据库向您发送数据,这将成为您的瓶颈。记住:过早优化是万恶之源。请注意,无论您使用什么外部搜索,它可能不会比在数据库中搜索快,除非在某些边缘情况下。数据库实现(比如MySQL)在提高查找效率方面花费了大量精力。您使用的任何算法仍然必须依赖数据库向您发送数据,这将成为您的瓶颈。记住:过早优化是万恶之源。