MySQL - Innodb,搜索

MySQL - Innodb,搜索

我最近将我的一个 mysql 表从 myisam 切换到了 innodb。之前我使用的是 MATCH()。由于 innodb 不支持 match(),我决定使用 LIKE。

现在我遇到了一个问题。我的表有 190.6 MiB 大,有 234,083 行。当我使用 LIKE 时,我的服务器会变慢。

我从 myisam 切换到 innodb 以停止锁定表。

我该怎么办?谢谢!

答案1

如您所知,MyISAM 表在写入密集的情况下表现不佳。 InnoDB 在这方面表现更好;但没有全文索引(可使用match())。这归结为几个答案:

  • 你可以在 InnoDB 上创建写入密集型表,在 MyISAM 上创建全文表(应该只有一两个)

  • 如果它们相同;或者如果几个表都有大文本,则将这些文本分解到单个(MyISAM)表中,只使用文本和关键字段来连接到任何其他表。

  • 如果文本本身写入量很大,那就使用专用的文本搜索引擎(Sphinx、Lucene 等)

答案2

这也是我正在处理的一个问题。有人向我指出了Sphinx 引擎

这是关于MySQL 论坛

到目前为止,它还没有被按下,所以我还没有测试过。如果你选择这条路线,请告诉我你对性能的发现。

相关内容