写sql语句的经验之谈

1. 不论一个sql中涉及到多少表,每次都用两个表(结果集)操作,得到新的结果后,再和下一个表(结果集)操作。

2. 避免在select f1,(select f2 from tableB ).... from tableA 这样得到字段列。直接用tableA和tableB关联得到A.f1,B.f2就可以了。

3、避免隐含的类型转换

 

select id from employee where emp_id='8'  (错)

select id from employee where emp_id=8    (对)

emp_id是整数型,用'8'会默认启动类型转换,增加查询的开销。

4、尽量减少使用正则表达式,尽量不使用通配符。

5、使用关键字代替函数

 

select id from employee where UPPER(dept) like 'TECH_DB'  (错)

select id from employee where SUBSTR(dept,1,4)='TECH'    (错)

select id from employee where dept like 'TECH%'         (对)

 

6、不要在字段上用转换函数,尽量在常量上用

 

select id from employee 

where to_char(create_date,'yyyy-mm-dd')='2012-10-31'  (错)

select id from employee 

where create_date=to_date('2012-10-31','yyyy-mm-dd')   (对)

  

7、不使用联接做查询

 

select id from employee where first_name || last_name like 'Jo%'  (错)

8、尽量避免前后都用通配符

 

select id from employee where dept like '%TECH%' (错)

select id from employee where dept like 'TECH%' (对)

9、判断条件顺序

 

select id from employee 

where creat_date-30>to_date('2012-10-31','yyyy-mm-dd')   (错) 

 

select id from employee 

where creat_date >to_date('2012-10-31','yyyy-mm-dd')+30   (对)

10、尽量使用exists而非in

当然这个也要根据记录的情况来定用exists还是用in, 通常的情况是用exists

 

select id from employee where salary in 

(select salary from emp_level where....)   (错) 

   

select id from employee where salary exists

(select 'X' from emp_level where ....)   (对)

11、使用not exists 而非not in,代码和上面的类似。

12、减少查询表的记录数范围

13、正确使用索引

索引可以提高速度,一般来说,选择度越高,索引的效率越高。

14、索引类型

唯一索引,对于查询用到的字段,尽可能使用唯一索引。

还有一些其他类型,如位图索引,在性别字段,只有男女的字段上用。

15、在经常进行连接,但是没有指定为外键的列上建立索引

16、在频繁进行排序会分组的列上建立索引,如经常做group by 或 order by 操作的字段。

17、在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不建立索引。

如性别列上只有男,女两个不同的值,就没必要建立索引(或建立位图索引)。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。

18、在值比较少的字段做order by时,翻页会出现记录紊乱问题,要带上id字段一起做order by.

19、不要使用空字符串进行查询

 

select id from employee where emp_name like '%%' (错)

20、尽量对经常用作group by的关键字段做索引。

21、正确使用表关联

利用外连接替换效率十分低下的not in运算,大大提高运行速度。

 

select a.id from employee a where a.emp_no not in 

(select emp_no from employee1 where job ='SALE')  (错)

 

22、使用临时表    

在必要的情况下,为减少读取次数,可以使用经过索引的临时表加快速度。

 

select e.id from employee e ,dept d where 

e.dept_id=d.id and e.empno>1000 order by e.id   (错)

  

select id,empno from employee into temp_empl 

where empno>1000 order by id

select m.id from temp_emp1 m,dept d where m.empno=d.id (对)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软发布Azure Storage不可变存储功能的正式版本

随着新的不可变存储功能的发布,blob特性在特定的保留期间内将是不可以擦除和修改的。该特性从今年6月份开始进行预览使用,现在,微软宣布它在所有公开Azure region中正式发布。\\微软添加对不可变存储的支持,以便于帮助客户遵循像S…

html 表单控制器,c# – html表单发布到mvc控制器

将Html发布到MVC控制器>使用表单创建HTML页面(不要忘记引用Jquery.js)User Name Password $(document).ready(function () {//get button by ID$(#btn1).submit(function () {//call a function with parameters$.ajax({url: rec/recieveData, //(rec) Controllers-name//(r…

红米note5手机插u盘没反应_认真分析下:荣耀智慧屏x1和红米x50对比哪个好?用后一个月告诉大家实情...

这二款电视荣耀智慧屏x1和红米x50区别还是有的哈,外观和款式是不一样的,不过家用都是可以的,看个人吧,我自己用的是荣耀智慧屏x1,款式是我喜欢的,多时尚的,整体质感不错的,看上去很大…

用Excel函数提高效率

今天在计划20某年项目采购各阶段时间点,从合同计划签订日期开始倒退。 规则如下: 项目采购申请----(1-2个工作日)---->项目立项----(1-2个工作日)--->采购小组成立-----(2-3个工作日&am…

python测试工具开发面试宝典3web抓取

2019独角兽企业重金招聘Python工程师标准>>> 用requests输出网站返回头 输出 https://china-testing.github.io/ 的返回头 参考答案In [1]: import requestsIn [2]: url https://china-testing.github.io/In [3]: response requests.get(url)In [4]: response.req…

计算机网络本直通线的制作方法,电脑网络:教你一分钟自制高质量网线(含水晶头分类),不求人...

在文章开头,我们首先来介绍一下制作水晶头需要用到的工具——网线钳。这不是多么高科技的东西,价格也不贵,普通用户都能接受,从网上或是线下都能买到。网线水晶头的制作及检测方法,从来没人写过这么全我们主要用到网线…

Communications link failure,The last packet successfully received from the serve

最近做测试,发现Mysql 过一段时间会无法连接,导致数据库数据不一至,极其郁闷。 使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误: Communications link failure,The last packet succ…

sap crm button_正值SAP中国成立25周年之际,江苏金来奇智能科技SAPB1项目正式启动...

正值SAP中国成立25周年之际,江苏金来奇智能科技的SAP项目于2020年11月02日正式启动,代表着SAPB1在智能装备行业又一成功的案例。江苏金来奇隶属于无锡金鑫集团股份有限公司,无锡金鑫集团股份有限公司坐落于风景秀丽的太湖之滨,位于…

安装hadoop集群---resourcemanager和NameNode不在同一台机器上

1、复制虚拟机,搞了5台。 1:namenode 2:secondardNameNode,resourcemanager 3,4,5:DataNode 2、修改了网卡配置,连接上SecureCRT ---------root----用户---------- 3、date查看了…

cf375D. Tree and Queries(莫队)

题意 题目链接 给出一棵 n 个结点的树,每个结点有一个颜色 c i 。 询问 q 次,每次询问以 v 结点为根的子树中,出现次数 ≥k 的颜色有多少种。树的根节点是1。 Sol 想到了主席树和启发式合并。。很显然都不能做。 标算是dfs序上暴力莫队。。甘…

it项目管理 pdf_IT项目管理的控制经验

据调查,只有37%的IT项目在计划时间内完成,42%的在预算内完成。IT项目成功率不高的根源在于IT项目管理是项系统工程,不仅需要项目经理个人具备一定的组织、决策、技术、业务、沟通能力,更需要运用多种手段对项目的时间、质量、成本…

安装hadoop集群---resourcemanager和NameNode同一台机器上

1、复制虚拟机,搞了5台。 1:namenode,resourcemanager 2:secondardNameNode 3,4,5:DataNode 2、修改了网卡配置,连接上SecureCRT ---------root----用户---------- 3、date查看了…

ps把图抠到html里,ps抠图教程:手把手教你如何用ps抠头发丝

PS抠图是现在常见的抠图方法之一,色块分明的图是很好抠的,但是如果是需要抠出来的物体是细微凌乱的呢?就像头发丝。PS如何抠头发丝才能毫无P图痕迹?如何抠头发丝一类的图像呢,本文介绍的是使用通道结合其余一些命令完成…

臻识科技用全智能相机,把智慧城市的交通/安防/工业制造做到极致

俨然,智慧城市已经是一个技术密集、资本密集、巨头密集、关注度密集的大热门领域。 从技术层面来看,智慧城市对当下热门技术进行了综合:Cloud、Big Data、AI、AR/VR、5G、IoT、Quantum Computing、Edge Computing、 Block Chain等&#xff0…

热式气体质量流量计检定规程_宁夏热式气体质量流量计价位,玻璃管液位计怎么样...

金湖中原仪表有限公司为您详细解读eJxKfc宁夏热式气体质量流量计价位的相关知识与详情,气体流量计是计量气体流量的仪表。安拆正在管路中记载流过的气体量。能够丈量煤气,空气,氮气,乙炔,,氢气,…

自己从零安装hadoop-HA集群

总体步骤 1、分配机器,各安装什么软件 2、每个节点设置时间一致,设置开机自动校验时间。 3、每个节点修改主机名。 4、每个节点配置hosts。 5、每个节点关闭防火墙。 6、上传JDK,配置JDK 7、创建hadoop用户。 8、给hadoop用户配置root…

高校学计算机研究生录取分数排名,四川大学计算机学院2018年硕士研究生招生拟录取名单及成绩公示...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼四川大学计算机学院2018年硕士研究生招生拟录取名单公示(全日制)姓名 拟录取专业 总成绩 初试成绩 复试成绩 备注白迪 计算机技术 75.3 353 160白婉玉 计算机技术 79.35 369 169.8曾春明 计算机技术 74.7 350 158.8陈澄 计算机技术…

蓝牙基础知识进阶——Physical channel

蓝牙基础知识进阶——Physical channel二、物理通道物理通道是piconet区分的标准,它是蓝牙系统结构层次中的最底层了。Q1:物理通道有哪些类型物理通道通常可以分为四种类型:1、basicpiconet channel2、adaptedpiconet channel这两种channel是…

mapreduce程序开发的一些总结

mapreduce在编程的时候,基本上一个固化的模式,没有太多可灵活改变的地方,除了以下几处: 1、输入数据接口:InputFormat ---> FileInputFormat(文件类型数据读取的通用抽象类) DBInputFormat (数据库数据读…

深度学习数据驱动_利用深度学习实现手绘数据可视化的生成

前一段时间,我开发了Sketchify, 该工具可以把任何以SVG为渲染技术的可视化转化为手绘风格。(参考手绘风格的数据可视化实现 Sketchify)那么问题来了,很多的chart是以Canvas为渲染技术的,那要怎么办&#xf…