1

我真的不知道应该为我的表选择哪种类型的数据库引擎。

+-----------------------+
| id | userid | content |
+-----------------------+

想象一下这张桌子。userid 持有存储在另一个表中的用户 ID。此外,其他一些表正在使用该表的 id 字段。因此,我认为将 id 设置为主键,将 userid 设置为外键会加快连接过程。但是,如果我选择我的表作为 InnoDB 来设置外键,那么我无法对内容(这是一个 TEXT 字段)进行 FULLTEXT 搜索。

所以基本上,如果我切换回 MyISAM 以使用 FULLTEXT 搜索,在加入 3-4 个数亿行的表时会遇到问题吗?

PS:如果有另一种可靠的方法来创建表来处理连接和全文,请告诉我,我也可以更改表结构。

4

2 回答 2

3

看看这个问题的答案:Fulltext Search with InnoDB

简而言之,MyISAM 会在您写入时锁定整个表,因此当您对表进行大量写入时,这会影响性能。解决方案是使用 InnoDB 表来实现引用完整性,并使用专用搜索引擎对内容进行索引/搜索(例如 Lucene)。

于 2011-10-19T12:02:09.610 回答
1

InnoDB 的扩展性比 MyISAM 好。如果您谈论的是数亿行,那么请选择 InnoDB 并调整搜索引擎。AFAIK,FULLTEXT 在某一点之后变得非常慢。因此,选择 InnoDB + 您选择的搜索引擎。

于 2011-12-09T10:28:05.270 回答