在MySql中,我想查找其中一列中的字符串值以查询字符串开头(或与查询字符串相同)的记录.该列使用适当的归类顺序编制索引.但是列上没有全文搜索索引.
一个好的解决方案将:
使用列上的索引.需要迭代表中所有记录的解决方案不够好(表中有数百万条记录)
使用具有任何字符值的字符串.某些列值包含标点符号.查询字符串也可能.如果您的解决方案包含正则表达式字符或类似字符,请记住这一点.字符串是UTF-8编码的,但如果您的解决方案仅适用于ASCII,它仍然有用.
我现在最接近的是
SELECT * FROM TableName WHERE ColumnName BETWEEN query AND <<query+1>>
Run Code Online (Sandbox Code Playgroud)
在排序顺序中<<query+1>>按字典顺序预先计算的位置query.例如,如果query是"o hai" <<query+1>>则为"o haj".
我需要在ubuntu上的bash脚本中使用300万个字符串的MD5总和.300万字符串 - > 300万MD5哈希值.每个字符串实现大约需要0.005秒.那是4个多小时.有哪些更快的替代品?有没有办法将字符串组泵入md5sum?
#time md5sum running 100 times on short strings
#each iteration is ~0.494s/100 = 0.005s
time (for i in {0..99}; do md5sum <(echo $i); done) > /dev/null
real 0m0.494s
user 0m0.120s
sys 0m0.356s
Run Code Online (Sandbox Code Playgroud)
一个好的解决方案将包括一个bash/Perl脚本,它从stdin中获取一个字符串列表并输出一个MD5哈希值列表.