mysql性能优化方式

1.选取最适用的字段属性

如果库表越小,查询速度越快,如果char能满足,不要用varchar,设置字节宽度在能满足条件的情况下尽可能小.

尽量把字段设置为not null,查询过程中,数据库不用去比较null值.

值类型比文本类型处理速度快的多,

2.使用连接(JOIN)来代替子查询(Sub-Queries)

Mysql从4.1开始支持子查询,既嵌套查询.

子查询的优点是:逻辑清晰,写法简单,可有效的避免事务或表的死锁.

join优点:速度比嵌套快很多.如果关联条件是索引的话,速度更快.之所以更有效率一些,是因为Mysql不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作.

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

Mysql从4.0的版本开始支持Union查询,他可以把需要临时表的两条或更多的select查询合并的一个查询中.

在客户端的查询回话结束的时候,临时表会被自动删除,从而保证数据库整齐,高效.注意,union执行过程中,所有select语句中的字段数目相同.

4,事务

当我们需要多条语句顺序执行,但是又担心由于环境问题,导致其中一些语句没有很好的执行完成,添加了事务机制,begin commit,保证了数据库的完整性和一致性.在这之间的一条SQL操纵失败,那么,RollBack命令就可以吧数据库恢复到begin开始之前的状态 事务的另一个重要的作用是当多个用户使用相同的数据源时,他可以利用锁定数据库的方法为用户提供一种安全的访问方式,这样可以保证用户的操作不被其他的用户所干扰.

5.锁定表

事务的存在会造成事务等待,当数据库的执行事务达到成千上万的时候,会产生比较严重的延迟.

用lock Table 和unlockTable可以有效缓解这种情况.??

6.使用外键

锁定表的方法可以维护数据的完整性,但是他却不能保证数据的关联性,外键是用来维护关联关系的.

create table testmain(id int primary key) engine = innodb;

create table testsub(subid int not null,id int not null, primary key(id,saledsid),foreign key(customid) references testmain(id) on delete cascade) engine = innodb;

on delete cascade 表示级联.如果删除了testmain中的一条数据,相应的子表中的数据也会被删除,

7.使用索引

索引是可以高效的提高数据库的处理性能,特别是当查询语句中包含有max(),min(),和orderby这些命令的时候,性能提高更为明显.

对一些包含重复数据的字段不要创建索引,Mysql从3.23.开始支持全文索引和搜索,全文索引在Mysql中是一个FullText索引类型,但仅能用于MyISAM类型的表,对于一个大的数据库,将数据装载到一个没有没有FullText索引的表中,然后再使用AlterTable或CreateTable创建索引,速度会非常快,但如果将数据加载到一个有fulltext索引的表中,执行过程会非常慢,

8.优化的查询语句

优化sql语句是很有效的提高数据性能的一种方法.

a.首先,不要将建有索引的int字段和bigint进行比较,但是作为特殊的情况,char和varchar类型的字段的字段大小相同的时候进行,可以将它们进行比较.

b.其次,在建有索引的字段上尽量不要使用函数进行操作.

例如,在一个Data类型的字段上使用Year()函数时,将会使索引不能发挥应有的作用,

c.第三,在搜索字符型字段是,我们会用Like关键字和通配符,这样做法虽然简单,但却也是以牺牲系统性能为代价的.

例如用like进行模糊匹配

SELECT  *  FROM  books  WHERE  name  like   "MySQL%"

如果换成下面的语句,就会快很多

SELECT  *  FROM  books  WHERE  name >=  "MySQL"  and  name  <"MySQM"

 最后应该注意在查询中让Mysql进行自动类型转换,因为转换也会使索引扁的不起作用.

以上转载自 MySQL数据库优化的八种方式(经典必看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值