当将二进制数据存储在MySQL中时,我会使用hex()
和unhex()
函数。但是我可以有两种方式搜索二进制数据:
方法1
select * from tbl
where
id=unhex('ABCDABCDABCDABCDABCDABCDABCDABCD')
方法二
select * from tbl
where
hex(id)='ABCDABCDABCDABCDABCDABCDABCDABCD'
两种方法都可以,但我的直觉是方法1更好,因为只有输入值会被unhex
函数处理,而在方法2中,表中id
列中的每个值都将通过hex
函数。
这种推理正确吗?MySQL是否会优化查询以防止这种情况?选择一种方法而不是另一种方法还有其他原因吗?
x
即可——例如,WHERE id = x'ABCDABCDABCDABCDABCDABCDABCDABCD'
。虽然这样可以省去对UNHEX()
的显式调用,但在表面下仍然执行完全相同的操作;只是更加简洁而已。 - eggyal