0

我的意思是,如果任何表由 ENUM 或 SET 类型的列组成,我将进行如下查询:

SELECT * FROM `tabname` WHERE `enum_field` = 'case1' OR `enum_field` = 'case2'

会有效率吗?或者引擎会将存储在 enum_field 中的数字转换为字符串,将其与模式进行比较(在我的示例中 - case1 和 case2)?使用此类列的最有效方法是什么?

谢谢!

4

1 回答 1

1

您上面提供的语法是正确的。
数据库引擎会将查询中的字符串转换为数字索引,在搜索表时使用。

根据mysql 文档,您也可以通过数字索引直接查询,但这有时会产生意想不到的结果,尤其是当您的任何枚举字符串值是数字时。

因此,假设“case1”的索引为 1,“case2”的索引为 2,您可以像这样重写您的查询:

SELECT * FROM `tabname` WHERE `enum_field` = 1 OR `enum_field` = 2
于 2013-06-11T03:44:41.353 回答