视图与索引


视图与索引

一、提高SQL查询效率

查询语句也有查询的效率问题,比如说交叉连接与内外连接接的区别,交叉连接需要产生一个笛卡尔积的临时表,这样效率比较低。

那如何提高查询语句的效率呢?

1、 选择有效的表名顺序,select语句一般优先处理写在from子句最后的表,将记录条数最少或者父表(被参考表)放在最后可提高查询效率。
2、select 尽量避免使用 * ,如果不需要查询所有属性的话,尽量把需要查询的字段一一写出来,而不是用*代替。比如说一共有10个字段,你需要查询其中的9个字段,把9个字段都写上更好,在满足需求的情况下,能少查一个字段就少查一个字段。

3、整合简单的数据库查询语句,能一次性查询出来的数据就不要分为两次或者多次查询。
4、尽可能使用where替换having,能使用where解决的就不要使用分组查询的having子句,因为having是查询所有记录之后,再进行分组过滤,其中可能还需要排序和统计等,比较繁琐。

5、 尽量多用内部函数,少用运算符自己进行的操作,因为内部函数的处理优化得比较好。
6、多使用表的别名,以减少解析时间。
7、尽量使用exists代替in,not exists代替not in。
8、 尽量用>=代替>等。如:有时候>5和>=6所查询的效果是一样的,但是一个是先找5,一个是先找6,多找了一个数。

二、视图

1、视图的使用
-- ① 视图关键字: view
	一般格式:create view <视图名> as <查询语句>;
	create view <视图名称> as