【发布时间】:2011-08-24 22:33:34
【问题描述】:
您好,我有一个使用 mysql 的 php 网站,并且我有一个表,其中有一列名为“名称”。 我打算让它具有以下功能:
- 它应该是 varchar(N) 类型,就像常规名称一样。
- 它可能很长,但绝不应该包含所谓的“描述”,因为那是在另一个我不关心搜索的字段中。 (也许在将来,我什至可能把它放在另一张桌子上)
- 它必须是唯一且可搜索的,这似乎使它成为一个合适的候选主键。
- 搜索是简单的类型,只是像 mysql LIKE %keyword% 这样的行为。
- 此表(非常)经常读取,每隔一段时间插入新行,很少删除/更新行。
- 许多其他表引用此表上的值,理想情况下我希望在其他表上有外键约束,这导致我想要使用 InnoDB。
我的问题是,我应该对这个表使用 MyISAM 还是 InnoDB?考虑到读取频率/使用的内存量/互联网上针对 varchar 主键的警告量,我的不太长的 varchar 也可以用作主键吗?
但是我真的想从 InnoDB 提供的外键约束中受益,还是我应该只在 php 级别担心它?
我特别关心的是 MyISAM 的全文搜索功能。我试图阅读官方 mysql 网页以了解它的用途,但未能理解到足以判断我的情况是否会从中受益。
【问题讨论】:
标签: mysql search indexing unique varchar