Heim >Backend-Entwicklung >PHP-Tutorial >mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?,myisaminnodb_PHP教程

mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?,myisaminnodb_PHP教程

WBOY
WBOYOriginal
2016-07-13 09:46:261115Durchsuche

mysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?,myisaminnodb

MyISAM 和 InnoDB 的基本区别

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

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

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

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

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

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

6.InnoDB 支持事物

选择存储引擎 根据实际情况选择。

一般情况下如果查询多建议使用myIsam 。

如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。

 

优化MYSQL数据库的方法:

 

1,选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份,性别',最好设置为ENUM

 

2,使用join代替子查询

 

3,使用联合(UNION)来代替手动创建的临时表

 

4,事务处理(保证数据完整性,例如添加和修改同时,两者成立则都执行,一者失败都失败)

 

5,适当建立索引(如何建立索引?索引的利与弊?)

 

6,优化sql语句

 

7,explain可以看到mysql执行计划

 

8,分表(垂直分表,水平分表?)

相关阅读

http://www.phpernote.com/mysql/500.html

http://www.nowamagic.net/librarys/veda/detail/1899

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1033982.htmlTechArticlemysql的MyISAM 和 InnoDB 的区别?优化MYSQL数据库的方法?,myisaminnodb MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn