【发布时间】:2013-10-03 02:37:03
【问题描述】:
我有一张桌子 - 用户资料(目前使用 MISAM)
我有搜索栏可以搜索此表 - 姓名、电子邮件、当前城市。(我使用 FULLTEXT SEARCH)
但是在这个表中会有很多更新和可选字段(NULL默认)
如果我使用 INNODB,我将不得不切换到 %LIKE%
如果我使用 LIKE,我会写这样的代码
我将字符串分解为数组而不是使用 LIKE 搜索
$nums=//count(array());
for($n=0; $n<$nums; $n++){
$SQL .="
(
fullname LIKE :search_1_$n OR
email LIKE :search_2_$n OR
city LIKE :search_3_$n
) && //remove last && after
";
}
SELECT...WHERE $statement...
MyISAM:
Good - FULLTEXT serach, search speed
Bad - UPDATE, NULL take more space
InnoDB:
Good - UPDATE, NULL
BAD - no FULLTEXT SEARCH, search speed slower
如果我选择MYISAM,我将不得不放弃update & NULL,如果我选择INNODB,我将不得不放弃全文和搜索速度
我应该选择哪一个,有什么建议吗?搜索还是更新,哪个更重要?
【问题讨论】:
-
我认为您过早地进行了优化。如果您需要全文搜索,请使用 MyISAM。否则使用 InnoDB 并在遇到实际问题时担心它。
-
我读了很多帖子,有人说 MyISAM 不适合更新
-
还不错。如果可以的话,用一个真实的数据集对其进行基准测试——从第一原理推理对数据库来说价值不大,它们太复杂了。考虑使用 Postgres 而不是 MySQL,因为它不需要这些荒谬的权衡。
标签: mysql