在mysql中使用二进制文本比较 - 效率陷阱?

时间:2011-12-29 11:37:39

标签: mysql query-optimization string-comparison

我在用户名(定义为varchar)上使用binary string comparison以确保字符串完全匹配:

... where binary Owner = '$user' ...

... from Records join Users on binary Records.Owner = Users.User ....

但我不确定它是否对效率有一些(正面或负面)影响。 The manual州:

  

请注意,在某些情况下,如果将索引列强制转换为BINARY,   MySQL无法有效地使用索引。

在这种情况下是一个问题吗?我希望二进制文件更快,因为它不必忽略大小写,空格,一些重音等。

1 个答案:

答案 0 :(得分:1)

实际上,WHERE子句中的表达式可能无法在列上使用索引。您不希望名为x的浮点列上的索引可用于搜索

WHERE SIN(x) BETWEEN 0.0 and 0.1

例如。

问题的答案是将Owner列定义为二进制排序规则而不是不区分大小写的排序规则。请参阅此处了解如何执行此操作:http://dev.mysql.com/doc/refman/5.0/en/charset-column.html