对查询进行优化,尽量避免全表扫描,首先考虑在where和order by设计的列上简历索引
1.对于max()和count()这样的统计函数,将统计的字段设置索引可以实现sql的优化
2.子查询编程连接查询,可以加快查询的速度
3.优化limit,方法一:记录上次查询返回的主键,在下次查询时,利用主键进行过滤 。
方法二:使用有索引的主键进行排序
4.如何选择在合适的字段建立索引
1.在where从句,group by 从句,order by 从句,on从句中出现的列
2.索引字段越小越好
3.离散度大的列放到索引的前面,离散度值得的非重复ID的个数
5.索引优化
创建索引 :
CREATE index sc_c_id_index on SC(c_id);
6.数据库结构优化
使用可以存下数据的最小的数据类型
使用简单的数据类型,int要比varchar简单,使用int存储日期时,用到两个函数
FROM_UNIXTIME()和UNIX_TIMESTAMP()
使用bigint来存储IP地址,用到两个函数
INRT_ATON()和INET_NTOA()
尽可能使用not null定义字段
尽量少用text ,非用不可时最好考虑分表
7.范式化优化方法,将表查分,并建立关,避免数据冗余,插入,更新,删除异常问题
8.反范式化优化方法,适当的增加冗余,以一种空间来换区时间的操作实现查询的优化
9.水平拆分,垂直拆分。
尽量避免在where子句中使用!=或者<>,避免使用or连接条件,如果一个字段有索引,一个字段没索引,否则会进行全表扫描
对于连续的数值,能用between就不用in了,in和not in都要慎用,否则会全表扫描