牢记 SQL优化的目的 :
1、减少CPU消耗
2、减少I/O消耗
Mysql索引:
聚集索引
主键索引
非聚集索引
唯一索引
非唯一索引
组合索引
覆盖索引
使用索引的优点
1.可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性.
2.建立索引可以大大提高检索的数据,以及减少表的检索行数
3.在表连接的连接条件 可以加速表与表直接的连接
4.在分组和排序字句进行数据检索,可以减少查询时间中 分组 和 排序 时所消耗的时间
使用索引的缺点
1.创建和维护索引 耗费时间,随着数据量的增加而增加
2.索引文件占用物理空间,特别是对长字段的多种组合索引
3.对索引字段的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护, 降低数据的维护速度
索引使用的一些意见
1、索引尽量简短,特别是主键索引
2、索引字段设置为not null
3、表字段设计尽量短(int比varchar短)
4、表达式左边不能使用函数
5、索引在筛选率越高的字段上创建效果越好
6、对字段修改操作远大于查询时,不应该建索引
7、where条件中不要包含一些隐式转换
8、表达式右边尽量不要使用值时刻变化的函数如sysdate()
9、使用join时join字段的类型和字符集尽量保持一致
Or的查询优化
or一般不经过索引,所以为了避免全表扫描,一般可以用union all来替代