我正在研究的项目对于需要搜索的每一列都有一个名为“ft [columnname]”的第二列,该列有一个FULLTEXT索引,只搜索了这一列。
此列包含“优化”文本,该文本通过以下方式从原始列自动生成:
例如“我喜欢神奇宝贝,特别是皮卡丘!”成为“特别是像我一样的口袋妖怪皮卡丘。”
是否有任何(甚至非常小的)性能优势?数据库中的数据永远不会动态变化。
答案 0 :(得分:1)
您的特定应用程序可能会有功能优势,但将数据一式两份存储在很大程度上会影响性能 - 而不是一个好处。
由于您的数据现在是两倍大,假设数据集足够大,在各种级别的缓存(例如MySQL,OS)中只能保留一半的数据,因此您将从磁盘读取数量更多,这是正常的瓶颈。
话虽如此,如果你在ft索引列上使用单字节字符集,但在原始文本上使用多字节字符集,那么你的全文索引可能比其他情况下要小得多。
答案 1 :(得分:-3)
老实说,你不应该在第二栏中这样做,因为这样做意味着你正在使用 MyISAM 存储引擎作为生产表。 (或者,如果你能承受丢失一些数据,请继续)。
事实上,您确实关心性能,因此您应该考虑使用功能强大的全文搜索引擎,例如 Sphinx :http://www.sphinxsearch.com/