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