索引文本-MySQL与MS SQL
图像您有这样的应用程序:1db表,几个int字段,几个小varchar字段,和大约10个文本字段(内容变量-一些数据大约50个字符长,大多数大约100-200,一些大约1000,很少超过1000)。行计数以x0 000-x0 000为单位。 现在,我需要这样的有效查询方式(元语言): 选择(1如果textfield1类似于%param1%ELSE 0)作为r1,(1如果textfield2类似于%param2%ELSE 0)作为r2。。。等等,对于1个查询中的大多数文本字段,通常是动态的(可能包括其中的2个,也可能是全部) 现在的问题是,MySQL或MSSQL(可能是express,但可能是express,如果真的需要,可以升级到full)对我来说什么更好 我知道MySQL有很好的文本索引,您已经在第一个字符的自定义数量上设置了这些索引,因此我可以在典型场景中对其进行平衡(如下所示:) MSSQL只有全文索引,我没有这方面的经验。请注意,我不需要诸如单词邻近性或类似单词之类的特性(run=ran;一些词干分析会很好,但因为数据是多语言的,所以无论如何都不可能)。我只需要常用的%word%系统,仅此而已。我还必须能够找到短的子字符串(2个字符) 实际上,我们的目标是每小时/天运行尽可能多的这些查询(不会有足够的结果,永远不会,因为它们应该尽可能频繁地刷新),所以将这种效率视为要求:) 塔克斯索引文本-MySQL与MS SQL,mysql,sql-server,full-text-indexing,Mysql,Sql Server,Full Text Indexing,图像您有这样的应用程序:1db表,几个int字段,几个小varchar字段,和大约10个文本字段(内容变量-一些数据大约50个字符长,大多数大约100-200,一些大约1000,很少超过1000)。行计数以x0 000-x0 000为单位。 现在,我需要这样的有效查询方式(元语言): 选择(1如果textfield1类似于%param1%ELSE 0)作为r1,(1如果textfield2类似于%param2%ELSE 0)作为r2。。。等等,对于1个查询中的大多数文本字段,通常是动态的(可能包
更新:很显然,没有办法使用索引来优化%foo%之类的查询。因此,新的问题是:有没有其他方法可以加快这类查询的速度?(请省略“购买更多ram或SSD”之类的内容):
如“%foo%”
表达式无法在任何RDBMS中优化
在或中需要全文索引
我需要的只是像%word%系统一样的普通版本
然后选择您想要的任何DBMS,因为它们都会吸收这样的子句;-) 如今,许多应用程序使用外部索引和搜索引擎
看看你确定吗?你看过我包含的关于mysql的链接了吗?在我看来,这家伙几乎优化了一个查询,就像在文本上使用索引一样fields@rouen:类似于“foo%”的
与类似于“%foo%”的之间存在显著差异。后者无法使用索引进行优化。根据定义。阅读关于B-树的文章。非常感谢你的提示,我看了一下,很快就原型化了一些东西,Lucene.NET似乎是一个不错的选择。。快速灵活,我真的很惊讶:)