MySQL hex()vs unhex()

时间:2016-01-15 14:43:44

标签: mysql

在MySQL中存储二进制数据时,我使用hex()unhex()函数。但是我可以通过两种方式搜索二进制数据:

方法1

select * from tbl
where
    id=unhex('ABCDABCDABCDABCDABCDABCDABCDABCD')

方法2

select * from tbl
where
    hex(id)='ABCDABCDABCDABCDABCDABCDABCDABCD'

两种方法都有效,但我的直觉是方法1更好,因为unhex函数只处理输入值,而方法2中表id列中的每个值都有效将通过hex函数。

这种推理是否正确,还是MySQL会优化查询以防止这种情况发生?选择一种方法而不是另一种方法还有其他原因吗?

1 个答案:

答案 0 :(得分:3)

在列上使用任何函数时,使用索引变得困难或不可能。我不确定MySQL是否支持具有函数的索引,但它比仅使用列更复杂。

另外正如你所说,必须为每一行运行该函数,而在另一行中只运行一次输入数据。

出于这些原因,请使用带有unhex的表单。