mysql - MyISAM 或 InnoDB - 加入速度与查找速度

标签 mysql sql innodb myisam

请在关闭之前阅读问题,因为有很多关于此的问题,但至少我没有找到我要找的东西。

现在清楚的是:

 MyIsam is faster at searching strings (much faster)
 InnoDB is faster at joins (much faster)

所以我的问题是:我有以下设置:

两个表,假设 t1 具有列 idbla1bla2、...、blan ;和 t2 具有列 t1Idextra1extra2、...、extran

表 1 (t1) 是 InnoDB(需要对其进行事务处理,这样就很清楚了)。表 2 (t2) 始终与 t1 一起使用(在某些特定情况下是额外数据),因此在出现 t2 的地方之间始终存在连接。那将指向 InnoDB。问题是,在加入后,还将(始终)对其中一列内的字符串进行搜索。这将指向 MyISAM。

得到某物的时间显然是加入时间和搜索时间的总和。问题是,如果我优化其中一个,就会使另一个变慢。

奖励事实:表真的非常大,t2 从不需要事务、行锁或任何通常强加 InnoDB 的东西。

什么是更好的选择? MyISAM 还是 InnoDB?

最佳答案

唯一可以肯定的方法是创建两个表,用示例数据加载它们并测量您的查询。

一般来说,我会推荐你​​使用 InnoDB:

  1. 由于 MySQL 5.6 全文搜索在 InnoBD ( http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html ) 中也可用,所以我认为您将失去 MyISAM 快速字符串搜索作为主要优势
  2. 使用 MyISAM,您不仅会失去行锁定支持,还会失去外键以及数据完整性 + 不要忘记 MyISAM“崩溃”

关于mysql - MyISAM 或 InnoDB - 加入速度与查找速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542634/

相关文章:

sql - Firebird 存储过程中的动态 SQL(where)

sql - 使用对象标识符在 SQL 中创建 View

mysql - 加密电子邮件在 mysql InnoDB 中应该有什么类型和大小?

PHP 和 MySQL : Can 'insert on duplicate update' queries interfere?

php - 从 Web 服务器在 AWS 上触发 Python 脚本

Mysql更新只从第一行获取数据,是bug吗?

MySQL : How to use rownumber with a join Query statement?

javascript - Angularjs 将表单输入保存到 php 和 Mysql

sql - 如何使用INSERT INTO + SELECT FROM插入自定义值?

MySQL 重启失败,InnoDB me alloc error 12