![MySQL - Innodb,搜索](https://linux22.com/image/537003/MySQL%20-%20Innodb%EF%BC%8C%E6%90%9C%E7%B4%A2.png)
我最近将我的一个 mysql 表从 myisam 切换到了 innodb。之前我使用的是 MATCH()。由于 innodb 不支持 match(),我决定使用 LIKE。
现在我遇到了一个问题。我的表有 190.6 MiB 大,有 234,083 行。当我使用 LIKE 时,我的服务器会变慢。
我从 myisam 切换到 innodb 以停止锁定表。
我该怎么办?谢谢!
答案1
如您所知,MyISAM 表在写入密集的情况下表现不佳。 InnoDB 在这方面表现更好;但没有全文索引(可使用match()
)。这归结为几个答案:
你可以在 InnoDB 上创建写入密集型表,在 MyISAM 上创建全文表(应该只有一两个)
如果它们相同;或者如果几个表都有大文本,则将这些文本分解到单个(MyISAM)表中,只使用文本和关键字段来连接到任何其他表。
如果文本本身写入量很大,那就使用专用的文本搜索引擎(Sphinx、Lucene 等)