2010-08-12 62 views
3

我正在处理的项目针对每列需要搜索的第二列名为“ft [columnname]”,它具有FULLTEXT索引,并且只搜索该列。创建为FULLTEXT搜索进行优化的第二列有什么意义吗?

此列包含一个“优化的”文本,即自动从原始列在下面的方式产生:

  • 该字符串小写
  • 所有修饰被去除
  • 所有标点符号和不可搜索字符被删除
  • 所有重复的单词被删除
  • 所有单词从最长到最短排序
  • ,我真的不明白(与联合的话)

例如其他转换“我喜欢神奇宝贝,特别是皮卡丘!”成为“特别像我一样的口袋妖怪皮卡丘”。

是否有任何(甚至是非常小的)性能优势?数据库中的数据不会动态改变。

回答

-3

老实说,你不应该在第二列中这样做,因为这样做意味着你正在为生产表使用MyISAM存储引擎。 (或继续如果你能承受失去一些数据)。

其实,你在乎的表现,所以你应该考虑使用能够全文搜索引擎,例如狮身人面像http://www.sphinxsearch.com/

1

有可能是您的特定应用提供功能的好处,但存储一式两份的数据在很大程度上是性能问题 - 而不是效益。由于你的数据现在是两倍大,假设一个足够大的数据集,在不同级别的缓存(例如MySQL,OS)中只能容纳一半的数据,所以你将要从磁盘读取数据更多,这是正常的瓶颈。尽管如此,如果在ft索引列上使用单字节字符集,但在原始文本上使用多字节字符集,那么您的全文索引可能会比原来的要小得多。