Mysql优化

来源:互联网 发布:二维码生成算法 c语言 编辑:程序博客网 时间:2024/06/15 23:30
什么是优化?合理安排资源,调整系统参数使MySQL运行更快,更节省资源;优化是多方面的,包括查询、更新、服务器等;原则:减少系统瓶颈,减少资源占用,增加系统的反应速度;
数据库性能参数?使用SHOW STATUS语句查看MySQL数据库的性能参数:SHOW STATUS LIKE 'value;常用的参数:Slow_queries  慢查询次数、Com_(CRUD) 操作的次数、Uptime  上线时间;
使用索引查询需要注意?索引可以提供查询的速度,但并不是使用了带有索引的字段查询都会生效,有些情况下是不生效的,需要注意!
使用LIKE关键字的查询?在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为“%”,索引不起作用。只有“%”不在第一个位置,索引才会生效
使用联合索引的查询?MySQL可以为多个字段创建索引,一个索引可以包括16个字段。对于联合索引,只有查询条件中使用了这些字段中第一个字段时,索引才会生效。
使用OR关键字的查询?查询语句的查询条件中只有OR关键字,且OR前后的两个条件中的列都是索引时,索引才会生效,否则,索引不生效。
子查询优化?MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响。
优化:
可以使用连接查询(JOIN)代替子查询,连接查询时不需要建立临时表,其速度比子查询快。
数据库结构优化?一个好的数据库设计方案对于数据库的性能往往会起到事半功倍的效果。需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面的内容。
<1>将字段很多的表分解成多个表,对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。
<2>增加中间表,对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,将需要通过联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询。
<3>增加冗余字段,设计数据表时应尽量遵循范式理论的规约,尽可能的减少冗余字段,让数据库设计看起来精致、优雅。但是,合理的加入冗余字段可以提高查询速度。表的规范化程度越高,表和表之间的关系越多,需要连接查询的情况也就越多,性能也就越差。
注意:
冗余字段的值在一个表中修改了,就要想办法在其他表中更新,否则就会导致数据不一致的问题。
插入数据的优化?插入数据时,影响插入速度的主要是索引、唯一性校验、一次插入的数据条数等。插入数据的优化,不同的存储引擎优化手段不一样,在MySQL中常用的存储引擎有,MyISAM和InnoDB,
原创粉丝点击