MySQL中InnoDB和MyISAM类型的差别

2016-02-19 18:06 3 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享MySQL中InnoDB和MyISAM类型的差别,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

  InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。下面是已知的两者之间的差别,仅供参考。

  1.InnoDB不支持FULLTEXT类型的索引。

  2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

  5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

  另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

  任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

来源:https://www.tulaoshi.com/n/20160219/1616789.html

延伸阅读
我们知道,在关系数据库标准中有四个事务隔离级别: 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别 可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,In...
2.4 表达式求值和类型转换 MySQL允许编写包括常量、函数调用和表列引用的表达式。这些值可利用不同类型的运算符进行组合,诸如算术运算符或比较运算符。表达式的项可用圆括号来分组。表达式在SELECT 语句的列选择列表和WHERE 子句中出现得最为频繁,如下所示: 所选择的每列给出了一个表达式,如WHERE 子句中所示的那样。...
G一下后,解决如下: /var/lib/mysql目录下,删除ibdata1、ib_logfile1、 ib_logfile0,然后重启MySql让其重建以上文件: mysqladmin -uroot -p shutdown sudo mysqld_safe & 搞定! 下面是网络上的其它文章。大家也可以参考下。 早上起来,到PHP站点去看了下,准备测试下别人写的一个CMS系统,高兴的下载了程序,然后把程序拷贝到所在目录...
标签: MySQL mysql数据库
  无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。   一、数字类型。数字类型按照我的分类方法分为三类:整数类、小数类和数字类。   我所谓的“数字类”,...
标签: MySQL mysql数据库
无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。 一、数字类型 数字类型按照我的分类方法分为三类:整数类、小数类和数字类。 我所谓的“数字类”,就是指 DECIMAL 和 NUMERIC,它们是...

经验教程

245

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部