【问题标题】:MyISAM & InnoDB alternativesMyISAM 和 InnoDB 替代品
【发布时间】: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


【解决方案1】:

在 innoDB 和 MyISAM 之间进行选择的一般规则是

  • 大量写入 - innoDB
  • 大量读取和少量写入 - MyISAM

在您的情况下,如果可能,您可以将 MySQL 更新到较新的版本。

InnoDB support for FULLTEXT indexes is available in MySQL 5.6.4 and higher.

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 2012-03-01
    • 1970-01-01
    • 2012-01-13
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多