我在用户名(定义为varchar)上使用binary string comparison以确保字符串完全匹配:
... where binary Owner = '$user' ...
或
... from Records join Users on binary Records.Owner = Users.User ....
但我不确定它是否对效率有一些(正面或负面)影响。 The manual州:
请注意,在某些情况下,如果将索引列强制转换为BINARY, MySQL无法有效地使用索引。
在这种情况下是一个问题吗?我希望二进制文件更快,因为它不必忽略大小写,空格,一些重音等。
答案 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