如何使mysql性能优化_mysql如何优化?mysql性能调优经验分享!

之前给大家介绍了四种mysql性能优化方面的方案,下面要继续的给大家这方面的内容,一起来了解一下,还有哪些优化方案吧!

1、使用外键

锁定表的方法能够维护数据的完整性,可是却不可以保证数据的相关性,所以,这个时候,我们就完全可以使用外键。

例:

外键能够保证每一条销售记录都指向某一个存在的客户。

这里的话外键能够将ustomerinfo表当中的customerid映射到salesinfo表中customerid,任何一条不合法customerid的记录都不会被插入或者是更新到salesinfo当中。CREATE  TABLE   customerinfo( customerid   int primary key) engine = innodb;

CREATE  TABLE   salesinfo( salesid int not null,customerid  int not null, primary key(customerid,salesid),

foreign key(customerid)  references  customerinfo(customerid) on delete cascade)engine = innodb;

2、优化的查询语句

在大多数的情况之下,使用索引能够将查询的速度提高,但是,假如sql语句使用不恰当的话,索引将不会发挥出它的作用。

下面的几个方面大家一定要注意了!

(1)尽量在相同类型的字段间进行比较的操作

(2)在建有索引的字段上尽量不要使用函数进行操作

(3)在搜索字符型字段的时候,有的时候,我们会使用到LIKE关键字和通配符,这样的方式虽然说会很简单,但是,却也是以牺牲系统性能来作为代价的!

例:

查询将会比较表中的每一条记录SELECT  *  FROM  books  WHERE  name  like   "MySQL%"

可是,假如换用下面的查询,返回的结果一样,可是,速度方便就要提升了很多SELECT  *  FROM  books  WHERE  name >=  "MySQL"  and  name  <"MySQM"

最后,我们应该要注意避免在查询中让MySQL进行自动类型转换,因为转换过程也会使索引变得不起作用。

3、锁定表

在有的情况之下,我们能够通过锁定表的方法来获得更好的性能。

例:LOCK TABLE inventory WRITE SELECT quantity  FROM   inventory   WHERE Item='book';

...

UPDATE   inventory   SET   Quantity=11   WHERE  Item='book';UNLOCKTABLES

这里的话,我们用一个select语句取出初始数据,通过一些计算,用update语句将新值更新到表中。

包含有WRITE关键字的LOCKTABLE语句能够保证在UNLOCKTABLES命令被执行之前,不会有其它的访问来对inventory进行更新、插入或者是删除的操作。

4、索引

索引是提高数据库性能非常常见的方式,索引能够将数据库服务器以比没有索引快得多的速度检索特定的行。

尤其是在查询语句当中包含有MAX(),MIN()和ORDERBY这些命令时,性能提高的会更加的明显。

那么,又有哪些字段应该建立索引呢?

通常的话,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上。

以上的几种方案你都了解了吗?欢迎继续关注本站,更多关于java架构师的知识,可以给大家分享哦!

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值