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子句的字段上进行表达式操作

 

posted @ 2017-09-11 15:40  xmiaomiao1019  阅读(151)  评论(0编辑  收藏  举报