我试图在数据库中存储至少500,000个小“文件”(偶尔平均大小为3 KB,大约8~10 MB)。这是为了从文件系统中删除它们并加快搜索/用户操作。
将它们存储在数据库(MySQL)中一直没问题。数据库存储该数量的文件并使用相关索引快速搜索元数据(字符串,日期时间,日期时间)。
不幸的是,但不出所料,任何在LONGBLOB中搜索的尝试都非常缓慢。在LONGBLOB中,这里是数据的外观:
将此数据分类为文本或未知,然后将其放在单独的LONGTEXT表中,可以在执行类似LIKE“%X%”(与LONGBLOB相反)的操作时提高性能?
在搜索BLOB时,是否还有其他技术可以提高性能(以非常“grep”样式)?搜索通常是BLOB中保存的短数据序列,并且可能很少有搜索重复(但搜索有些可预测,某些数据比其他数据更有趣)。
答案 0 :(得分:1)
好吧,你最好做一个全文索引(在这样的数据量上会有很大的数量)并进行MATCH AGAINST
查询以便有效地搜索。 <{1}}在大量文本上的速度非常缓慢,这是众所周知的,应该避免使用。
http://dev.mysql.com/doc/refman/5.5/en//fulltext-search.html
您也可以将它们保存在FS中并构建自己的命令行工具,您可以在服务器端语言中调用实际执行“GREP样式”搜索并返回与您的“查询”匹配的文件路径列表,但我不确定这是否有效。