300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SQL语句的优化(常规SQL语句的优化)

SQL语句的优化(常规SQL语句的优化)

时间:2021-06-18 21:13:24

相关推荐

SQL语句的优化(常规SQL语句的优化)

SQL语句的优化(常规SQL语句的优化)

一、常规SQL语句的优化

1.1、不用 “ * ” 代替所有的列名。因为这样操作的时候 ,系统会通过数字字典将“ * ”转换成表的所有列名,会消耗大量的系统时间,查询速度比较的慢;

1.2、用truncate代替delete。使用delete删除数据,oracle会使用撤销表空间来存放恢复的信息,使用commit提交才会删除表数据,如果不使用commit进行提交,数据可以恢复到删除之前的状态;使用truncate会对表的数据直接删除,速度比较的快,不过也不能任何时候都使用truncate,当删除表中的某一条数据时使用delete;

1.3、在确保数据完整性的情况下多使用commit语句。使用commit语句可以实现DML语句的快速提交,可以快速的释放事务占用的资源,提高性能;

1.4、减少表查询的次数。在含有子查询的SQL语句中,尽量减少多表的查询:

低效率SQL:

SELECT NAME,age,sex FROM student WHERE age IN(SELECT age FROM Class WHERE age = 18)OR age IN(SELECT age FROM Class WHERE age = 20) ;

高效率SQL:

SELECT NAME,age,sex FROM student WHERE age IN(SELECT age FROM Class WHERE age = 18 OR age = 20);

从上边的语句可以看出:第一种低效率的SQL要进行两次查询,第二种高效率的SQL只需要查询一次,明眼人一眼就可以看出来哪个好;

1.5‘、使用[not] exists 代替 [not ]in。[not] in 语句效率最低,他在操作的时候对查询的表进行了全表遍历

not in 语句:

SELECT NAME,age,sex FROM student WHERE age NOT IN(SELECT age FROM Class WHERE age = 18) ;

exists 语句:

SELECT NAME,age,sex FROM student WHERE EXISTS(SELECT age FROM Class WHERE age != 18);

注意在使用的时候,exists的前边一定不要加字段,因为习惯了加字段,所以总是犯错,这个死坑;其实当in后边的子句,结果集很小的时候也是可以用的;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。