
select 学生表姓名,
家长表姓名,
家长表电话,
班级表班主任,
班级表人数
from 学生表,家长表,班级表
where 学生表学生编号=家长表学生编号
and 学生表班级编号=班级表班级编号
and 学生表姓名='小明' --这句不加可以查询全部学生
这个几乎所有数据库通用
1SQL查询语句的重写,对于一个查询可以用多种查询语句实现,但不同查询语句的数据库执行计划是不同的,一旦不能够使用索引或造成较大的内存占用会导致性能下降,因此需要对查询语句进行重写优化,最典型的例子就是notin语句使用外连接方式实现来进行优化
2创建合理的索引结构,根据查询语句的中查询条件,在关系表上建立相应的索引,如B树索引和hash索引
3修改程序业务逻辑,有些功能如果使用SQL语句实现,不但SQL语句复杂,还将导致数据库的负担增加,因此可以将有些数据 *** 作的业务逻辑放到应用层进行实现,就是通过java编程实现
4修改数据库服务器相关参数,优化服务器性能
1、首先打开数据库,建立好表。
2、然后查询全体教师的教师号、姓名、职称,并分别为三列指定别名:教师号、姓名、职称,如下图所示。
3、查询结果如下图所示。
4、接着查询所有姓张的学生的学号和姓名,如下图所示。
5、最后查询选修C1(高等数学)且成绩高于85分的学生的学号、课程号和成绩,如下图所示就完成了。
摘 要 随着数据库应用范围及规模的不断扩大,数据库的性能问题逐渐显现,优化数据库有助于维持系统的稳定性以及运行的高效性。本文主要依据笔者在实际工作中的精英,对SQL语句优化的目的、SQL语句优化技术及原则进行全面分析和阐述。
关键词 ORACLE数据库;SQL语句;优化
1前言
随着现代化信息技术的迅猛发展,互联网应用的日益普及,数据库技术的影响力越来越大。作为信息系统管理的核心,数据库的主要 *** 作就是查询,数据库的应用效率在很大程度上是由查询速度决定的,特别是对于规模较大的数据库而言,查询速度十分关键。查询速度在SQL语句中占有很大比重,所以,通过对查询语句进行优化有助于促进应用系统性能及效率的进一步提升。
2SQL语句优化分析
21SQL语句优化的目的
对于一个数据库而言,在确保设计无误的前提下,要想避免出现性能问题必须确保其拥有合理的SQL语句结构。最简单的数据库寻找数据路径是对SQL语句进行调整,ORACLE数据库性能提升的主要途径就是对SQL语句进行适当的调整。从本质上讲,SQL语句优化就是确保所使用的语句可以被优化器识别,对索引进行有效利用以便控制表扫描的I/O次数,有效防止出现表搜索。用高性能的SQL语句替代低性能的SQL语句,确定最佳的数据查找路径,尽可能使CPU时间与I/O时间保持平衡是进行优化的主要目的。在对SQL语句进行优化的过程中,以系统需求为依据确定最有可能实现性能提升的语句并进行优化。
22SQL语句优化技术及原则
当数据量积累到一定程度之后,对于数据库全表SQL语句进行一次扫描,若查询策略较好,一般只用几秒钟,但如果SQL语句性能较低,就需要用几分钟甚至更多时间。从这点不难看出,SQL语句性能对于查询速度具有极大的影响,所以,对于应用系统而言,不仅能满足功能的实现,还要保证SQL语句的质量。
(1)采取适宜的索引。为达到优化查询的目的,一项重要工作就是确定相适应的索引,并严格依照原则加以使用,与此同时,为有效控制I/O竞争,不可以在同一个磁盘中同时建立索引和用户表空间。
语句1:SELECT CUS_NO, CUS_NAME FROM CUSTOMER WHERE CUS_NO NOT IN
(SELECT CUS_NO FROM SERVICE);
语句2: SELECT CUS_NO, CUS_NAME FROM CUSTOMER WHERE NOT EXISTS
(SELECT FROM SERVICE WHERE SERVICECUS_NO=CUSTOMERCUS_NO);
上述两个语句可以达到一致的查询结果,对二者进行对比,当执行语句1时,由于ORACLE未利用CUSTOMER 表上CUS_NO索引,所以就会扫描整表,在执行语句2的过程中,ORACLE所扫描的只是CUSTOMER 表子查询中的联合查询,并且使用了CUS_NO索引,因此,在执行效率方面明显优于前者。
(2)避免在SELECT子句中出现“”。ORACLE在进行解析时,需要按照一定顺序对“”进行转换,该项转换工作的进行需要对数据库的数据字典进行查询,势必需要花费较多的时间,这样就会导致较低的效率,所以,要避免在SELECT子句中出现“”。
(3)如果必要可以利用COMMIT提交事务。ORACLE能够自动提交DDL语句,而诸如DML等类型的语句的提交则是通过手动方式或者回滚事务实现的。在编写应用程序的过程中,在 *** 作诸如insert、delete以及update 等较为复杂的语境的时候,利用COMMIT提交事务可以讲会话中持有的锁加以释放,将存在于缓存中的未经修改的数据块进行清除,进而将系统资源予以释放,促进系统性能的进一步提升,因此,如果有必要,可以利用COMMIT对相关事务进行提交。
(4)联合查询连接顺序的确定。如果查询 *** 作涉及到多个表,基础表应当是交叉表,所谓交叉表具体是指被其他表引用的表。连接执行效果在很大程度上受到FROM语句中表的顺序的影响,对于FROM中所包含的表,ORACLE解析器进行处理的顺序是由右至左,SQL语句中所选择的基础表会因优化器的不同而有所区别,在使用CBO的情况下,优化器会对SQL语句中各个表的物理大小以及索引状态进行检查,在此基础上确定一个花费最小的执行路径;在使用RBO的情况下,如果全部的连接条件均有索引与之相对应,那么,FROM子句中位置最后面的表就是基础表。
(5)IN用EXISTS取代。在对数个基础表查询过程中,一般需要进行表的连接。因为利用IN的子查询过程中,ORACLE的扫描对象是全表,因此,出于提高查询效率目的的考虑,应当将IN用EXISTS取代。
(6)在索引列中不使用计算。当通过对函数进行引用在WHERE子句中进行计算的时候,假如索引列只是函数的一部分,优化器就会针对全表进行扫描,而不会使用索引,所以,在索引列中不能使用函数。
3结语
综上所述,随着现代化信息技术的迅猛发展,互联网应用的日益普及,数据库技术的影响力越来越大。在信息量迅速激增的形势下,数据库优化调整成为当前所面临的一大关键性问题,特别是对规模较大的数据库而言,及时进行优化的意义更加倍重大。对于数据库的运行性能而言,最主要的影响因素主要体现在以下几点:数据库系统架构的设计是否合理,资源配置是否科学以及SQL语句编写效率等。笔者从事的是电信企业的运营分析工作,每天都要从数据库取各种数据,可以说是离不开数据库,所以在实践中,我觉得严格遵守SQL语句优化原则及方法,并在实践中及时总结经验教训,可以实现对系统响应时间的有效控制,促进运行效率的提升。
参考文献
[1] 许开宇,胡文骅 如何提高ORACLE数据库应用程序的性能[J] 计算机应用与软件 2002(10)
[2] 郑耀,吴建岚 基于Oracle数据库的语句优化策略[J] 信息与电脑(理论版) 2011(07)
[3] 高攀,施蔚然 基于Oracle数据库的SQL语句优化[J] 电脑编程技巧与维护 2010(22)
[4] 钟小权,叶猛 Oracle数据库的SQL语句优化[J] 计算机与现代化 2011(03)
作者简介:
王勇军,男,(19811-),吉林通化人,就职于中国联合网络通信有限公司长春市分公司,通信工程师,本科,研究方向:SQL使用
(作者单位:中国联合网络通信有限公司长春市分公司)
以上就是关于数据库多表查询语句怎么写紧急!全部的内容,包括:数据库多表查询语句怎么写紧急!、数据库查询有哪些优化方面、sql简单查询语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)