浅谈如何优化SQL语句工作效率

2018-12-21 19:11朱庆烨无锡市人力资源和社会保障信息中心
数码世界 2018年5期
关键词:数据类型排序工作效率

朱庆烨 无锡市人力资源和社会保障信息中心

在社保卡管理系统的各大数据库中,都存在着大量的数据信息和记录,每天都需要对它们进行各种大量的数据操作。SQL作为数据库系统的标准语言,SQL语句可以被用来执行各种各样的操作,比如数据的查询、更新、删除等等。在使用SQL语句时,一般大家往往只是关心得到的结果的准确性,不会去关注其执行效率性;不同的SQL语句能得到同样的结果,但它们之间的效率可能会差几十甚至上百倍。随着数据库技术的不断发展,数据量的不断累积,如何优化SQL语句以提高工作的效率也成了重要的问题;本人依照实际工作--社保卡数据库管理中遇到的一些情况,通过几个方面来谈谈如何通过优化SQL语句来提高日常的工作效率。

1 合理的创建和使用索引

索引是数据库中最常用也是十分重要的数据对象。合理在数据库中创建和使用一个索引,可以起到优化语句的执行效率,提高响应速度的效果。创建和使用索引需要遵循以下原则:

对使用很频繁的列创建索引;

在需要进行多列排序时,可以在这些列上创建一个复合索引;

对于频繁操作的GROUP BY和ORDER BY列创建索引 ;

尽量不要对值很少的列创建索引,比如个人信息表中“性别”字段,值就“0”、“1”和“2”;

不要对经常进行Update、Insert、Delete操作的表创建太多的索引,一般不要超过7个。

2 选择最有效率的表名,条件顺序

因为社保系统用的是Oracle数据库,所以我在写代码之前会注意选择表名和条件的顺序问题,因为Oracle对表名采用的是从右到左的顺序解析,对条件采用的是自下而上的顺序解析,所以我都会注意它们之间的关系和排序。

表名排序一般都是把基础表(也就是数据记录总数少的表)放在后面。条件排序一般把多表之间的连接放在其它条件之前,除非它是可以是过滤掉大数量数据的连接,那就可以放到句末。

3 在语句中应正确使用通配符(%)

在日常工作中,如果需要在大量数据中查询符合某些特定条件的数据时,我们一般会用到含通配符(%)的like语句。要注意的是,通配符(%)一般不要放在语句的词首。

4 用EXISTS代替IN,用NOT EXISTS 代替NOT IN

我们在日常工作中会发现,在对一张表进行查询时,往往为了满足一个条件,会需要对另外一张表进行联接,一般会经常使用到两个语句,EXISTS和IN,这两种语句可以达到的结果是一样的;从格式上讲,IN语句比较容易理解;但是在执行效率方面,EXISTS语句会比较高效,EXISTS语句先执行主查询,然后执行子查询,找到匹配的数据,而IN语句先执行子查询,得到的结果列表存储在一个增加临时表的索引,再去到主查询。

5 正确使用数据类型

在数据库中存在有很多种的数据类型,很多数据表面上看似一样,其实数据类型不一定一样;如果你不注意写的语句,它有可能会使优化器无法执行的一些操作可以被优化,从而降低了执行效率。在Oracle中不兼容的数据类型有:integer和float,varchar和char,binary和long binary等等。

6 特别需要注意的几个方面

(1)SQL语句中使用了不等于操作符‘!=’和‘<>’,即使该列上有索引,那该索引也不能使用。

(2)使用IS NULL或IS NOT NULL将会限制使用索引,因为NULL值没有定义。

(3)语句中使用了函数也会会停用索引,如字符连接函数‘||’、数学函数‘+’等。

(4)相同的索引列之间不要进行比较,否则将会启用全表扫描。

(5)如果数据类型不匹配,进行比较的话,会自动限制索引的使用。

(6)在Where子句中尽量用OR来代替NOT。

通过对SQL语句的执行过程分析,我们可以看到,能提高工作效率的SQL语句基本上是优化过SQL语句,平时工作中可以从上述几个方面进行优化和改进,从而提高工作效率。当然,具体的优化改进方案,仍然需要根据实际需求和特定的数据库环境来定。只有在日常工作中通过不断的总结、积累和学习,才能写出高质量高效的SQL语句,当然这也只是提高效率的一个方面,其它方面的设计也要进行同步优化。总之,通过以上几个方面的综合优化,会使SQL语句的工作效率有一定的提升。

[1]徐凤梅.关系数据库中SQL查询语言的优化策略广西轻工业,2009

[2]吴险峰.SQLSERVER环境下的SQL优化方法探讨.电脑知识与技术,2008

猜你喜欢
数据类型排序工作效率
效率提高了,还是降低了?
作者简介
如何理解数据结构中的抽象数据类型
恐怖排序
节日排序
提高工作效率必须改掉的7种习惯
基于SeisBase模型的地震勘探成果数据管理系统设计
线上众筹产品的特征分析与研究
相似度计算及其在数据挖掘中的应用
10种方法助你提高工作效率