码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据库优化

时间:2017-09-11 16:28:55      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:导致   keyword   mysql数据库   磁盘   数据   优化   连接   类型   失效   

1、统一sql语句的写法

select * from test;

SELECT * FROM test;

对于这两条语句,程序员会觉得是相同的,但是数据库查询优化器认为是不一样的。

2、添加索引(在数据量大的情况下,效果尤为显著)

添加索引的作用在于:1、大大减轻服务器需要扫描的数据量,从而提高数据的检索速度;2、可以将随机I/O变为顺序I/O

3、表设计时选择优化的数据类型,更小的通常更好。更小的数据类型通常更快,因为他们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少,而且简单数据类型的操作通常需要更少的CPU周期,比如,整型比字符操作代价更低。

4、尽量避免NULL,在where子句中对字段进行null值判断,将导致引擎放弃使用索引而进行全表扫描,例如:selec id from test where num is null ,可以在num上设置默认值为0,确保表中num列没有null值,然后这样查询:selec id from test where num = 0

5、分配真正需要是空间,使用varchar(5)和varc(20)存储字符串的空间开销是一样的,但是更长的类会消耗更多的内存,因为mysql通常会分配固定大小的内存块来保存内部值。

6、表字段少而精,单表字段尽量控制在20个字段以内。

7、如果操作需要执行大量的sql语句或重复执行,存储过程比sql语句执行的更快。

写sql语句时需要注意的几点:

1、在where及order 不用涉及的列上面建索引

2、尽量避免在where子句中使用!=或<>操作符

3、避免where子句中使用or来连接条件,会导致索引失效而进行全表扫描

4、like  慎用,like keyword% 索引有效,  like %keyword    索引失效 

5、in 和not in也要慎用

6、尽量避免在where子句的字段上进行表达式操作

 

mysql数据库优化

标签:导致   keyword   mysql数据库   磁盘   数据   优化   连接   类型   失效   

原文地址:http://www.cnblogs.com/quying1019/p/7505277.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!