mysql 常识及优化

浮点数和定点数

float double real 浮点数

decimal numberic  定点数

 

1、浮点数存在误差问题

2、对货币等对精度敏感的数据,应该用定点数表示或存储

3、编程中,如果哟用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较

4、浮点数中要做一些特殊的处理

 

Innodb类型的表,有以下几种方式可以提高导入的效率

   a、因为Innodb类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺

序排列,可以有效的提高导入数据的效率。如果Innodb表没有主键,那么系统会默认创

建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这个优势提高导

入数据的效率。

   b、在导入数据前执行SETUNIQUE_CHECKS = 0 ,关闭唯一性校验,在导入结束后执行

SET UNIQUE_CHECKS = 1,恢复唯一性校验,可以提高导入效率。

 

优化group by 语句

         如果哟查询包括GROUPBY 但你想要避免排序结构的消耗,你可以指定ORDER BY

NULL 禁止排序

SELECT a,COUNT(*) FROM bar GROUP BY a ORDERBY NULL;

 

优化order by 语句

         在很多情况下,Mysql可以使用一个索引来满足OREDERBY 子句

         下列sql可以使用索引

     select * from t1 order bykey_part1,key_part2............;

     select * from t1 where key_part1= 1 order by key_part1 desc,key_part2 desc; 

     select * from t1 order bykey_part1 desc,key_part2 desc;

 

优化join语句

         查所有没有订单记录的用户取出来

         表selesinfo 和customerID建有索引的话 性能会更好一些

         SELECT *  FROMcustomerinfo LEFT JOIN salesinfoON  customerinfo.customerID = salesinfo. CustomerID WHERE  salesinfo.customerID  IS  NULL

 

Mysql 如何优化or条件

         对于or子语句,如果要利用索引,则or之间的每个条件列都必须用到索引;如果没有索引,则应该考虑增加索引

 

查询优先还是更新优先(insert、update、delete)

1、  写操作优先于读操作

2、  对某张数据表的写入操作魔衣时刻只能发生一次,写入请求按照他们到达的次序来处理

3、  对于某张数据表的多个读取操作可以同时地进行

其他优化措施

1、  使用持久的连接数据库以避免链接开销

2、  经常检查所有查询确实使用了必要的索引

3、  避免在频繁更新上的表执行复杂的select查询,以避免与锁定表有关的由于读、写冲突发生的问题

4、

5、充分利用列有默认值的事实,只有当插入的值不同于默认值时,才明确地插入值,这减少MySQL需要做的语法分析从而提高插入速度

6、对经常访问的可以重构的数据使用内存表,可以显著提高访问的效率

7、

优化数据库对象

我们可以使用 procedureadalyes()对当前已有应用的表类型的判断,该函数可以对数据表中的列的数据类型提出优化建议,

 

SELECT  * FROM 9tour_* PROCEDURE ANALYSE();

输出的每列信息都会对数据表中的列的数据类型提出优化建议

SELECT * FROM9tour_* PROCEDURE ANALYSE(16,256);

屏蔽enum类型提出的建议,enum定义通常很难阅读。

 

通过拆分,提高表的访问效率

        

 

选择更合适的表类型

1、             如果出现比较更严重的锁冲突,请考虑是否更改存储引擎到innodb,行锁机制可以有效的减少锁冲突的出现

2、             如果用查询操作很多,且对事物完整性要求不严格,则可以考虑使用Myisam

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wbandzlhgod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值