日记大全

日记大全 > 句子大全

十大方法(让你写出高质量的SQL语句)

句子大全 2023-11-14 07:35:01
相关推荐

1. 使用limit子句限制返回的数据行数

如果前台只需要显示15行数据,而你的查询结果集返回了1万行,那么这适合最好使用limit子句来限制查询返回的数据行数。

2. 应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默认值。

3. 统一SQL语句的写法

对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的。

select * rom dual

select * From dual

其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行!

4. 删除重复记录

最高效的删除重复记录方法(因为使用了ROWID)例子:

DELETE FROM EMP E WHERE E.ROWID >(SELECT MIN(X.ROWID) FROM EMP X WHEREX.EMP_NO = E.EMP_NO);

5. 下面的查询也将导致全表扫描:select id from t where name like‘%abc%’或者select id from t where name like‘%abc’若要提高效率,可以考虑全文检索。而select id from t where name like‘abc%’才用到索引。

6. 索引固然可以提高相应的select的效率,但同时也降低了insert及update的效率,因为insert或update时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。

7. 用OR的字句可以分解成多个查询,并且通过UNION 连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高。多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。

8. 尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库中的SQL语句,是控制流语言的集合,速度当然快。反复执行的动态SQL,可以使用临时存储过程,该过程(临时表)被放在Tempdb中。

9. 优化优化再优化

一切都做好了,就等代码执行了,然而执行过程一等少则几分钟,多着几个小时,这样的代码估计没人敢用吧。而SQL非常讲究效率,有时0.01秒的等待可能都会造成蝴蝶效应,久而久之,最终导致死锁或异常。这个时候就需要我们,对自己写的SQL代码好好的优化一番,而SQL优化的根本就在于执行计划。通过执行计划给出合理的优化方法,不管是建索引,还是改代码,这都是我们向高质量SQL更进一步的有效措施。

10. 用整型设计索引

以整型设计的索引,字节占用少,相对与字符串索引要快的多。

比如,在设计日期时候,可以用 int 类型取代 char 类型,于是日期就会变成:20200905。

好了,本文到此结束。如果对编程、计算机、程序员方面感兴趣的话,欢迎私信联系我,随时交流!点个关注,是对我莫大的鼓励!

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新