是否规范化数据库?只读MyISAM表,性能是主要优先级(MySQL)

hel*_*llo 5 mysql database normalization

我正在将数据导入到将来有一个静态MyISAM表的数据库中(只能读取).我之所以选择MyISAM是因为据我所知,它对我的​​要求更快(我根本不熟悉MySQL/SQL).

该表将包含各种列,例如ID,名称,性别,电话,状态...以及国家/地区,城市,街道列.现在的问题是,我应该创建表(例如国家:COUNTRY_ID,COUNTRY_NAME)在过去的3列,并通过ID是指它们在主表(正常化...... [?]),或者只是将它们存储为VARCHAR在主表(显然有重复)?

我主要关心的是速度 - 由于不会写入表格,因此数据完整性不是优先事项.唯一的操作是选择特定行或搜索特定条件的行.

如果我只使用VARCHAR,那么按国家,城市和/或街道列(以及可能在同一搜索中的其他列)搜索会更快吗?

编辑:该表有大约30列和大约10米行.

Mar*_*ers 4

如果进行规范化,搜索速度会更快,因为数据库只需比较整数而不是字符串。表数据也会更小,这使得搜索速度更快,因为可以一次将更多数据加载到内存中。

如果您的表索引正确,那么无论哪种方式都会非常快 - 您可能不会注意到显着的差异。

如果您发现自己在写作,您可能还需要查看全文搜索LIKE '%foo%',因为后者无法使用索引并会导致全表扫描。