【发布时间】:2014-07-23 13:22:48
【问题描述】:
有没有办法为 blob 字段编制索引并将索引用于 blob 搜索的开始?
目前我在文本字段中存储为十六进制的哈希值。 这些十六进制形式的哈希有 32 个字符长,构成了数据库中的大部分数据。
问题是,它们经常被它们的起始字节搜索,如
select * from mytable where hash like '00a1b2%'
我想将它们存储为 blob,因为这样可以节省大约 30% 的数据库大小。不过虽然
select * from mytable where hex(hash) like '00a1b2%'
工作,它也慢得多,似乎不使用索引。
搜索精确的 blob 匹配项确实使用索引,因此索引有效。
有没有办法在使用索引的 blob 开始(使用二进制/memcmp“排序规则”)上执行搜索?
我也尝试过 substr(),它显然比 hex() 快但仍然没有被索引
select * from mytable where substr(hash, 1, 6) = x'00a1b2'
【问题讨论】: