我真的迷失在我应该为我的桌子挑选哪种类型的数据库引擎。
+-----------------------+
| id | userid | content |
+-----------------------+
想象一下这张桌子。 userid正在保存存储在另一个表中的用户ID。此外,其他一些表正在使用此表的id字段。因此,我认为将id设置为主键,将userid设置为外键将加速连接过程。但是,如果我选择我的表作为InnoDB来设置外键,那么我就无法对内容(这是一个TEXT字段)进行FULLTEXT搜索。
所以基本上,如果我切换回MyISAM使用FULLTEXT搜索,那么加入时会有问题,例如3-4个数十亿行的表吗?
PS:如果有另一种可行的方法来创建表来处理连接和全文,请告诉我,我也可以更改表结构。
答案 0 :(得分:3)
看看这个问题的答案:Fulltext Search with InnoDB
简而言之,MyISAM在您写入时会锁定整个表,因此当您对表进行大量写操作时,这会对性能造成不利影响。解决方案是使用InnoDB表来获取引用完整性,并使用专用搜索引擎来索引/搜索内容(例如Lucene)。
答案 1 :(得分:1)
InnoDB比MyISAM更好地扩展。如果您正在谈论数亿行,那么请转到InnoDB并调整搜索引擎。 AFAIK,FULLTEXT在某一点之后变得非常缓慢。因此,请选择InnoDB +您选择的搜索引擎。