文档详情

数据库连接查询和优化策略.docx

发布:2022-09-09约2.66千字共4页下载文档
文本预览下载声明
数据库连接查询和优化策略   【摘要】:随着大数据时代的来临,人们对于计算机技术的依赖程度越来越高,特别是建立在数据库基础上的各种查询技术为人们的工作和生活带来了方便和快捷。在查询技术中,多表连接查询的使用非常频繁,本文就常见的各种多表连接查询的特点进行分析总结、讨论优化策略。   【关键字】:计算机技术数据库多表连接查询   1引言   计算机数据库技术是一门实用性非常强的技术,随着我国信息化建设工程的逐渐开展,在多个领域中都有了较为广泛的应用,并逐渐的发挥出在信息化建设中的主导作用。在数据库技术中查询技术是最基本、最常用也是最复杂的技术之一,而多表连接查询也是所有数据库操作中最繁琐所占比重最大的。所以弄清楚多表连接查询的种类,以及在什么情况下使用哪种查询策略是需要研究的重要问题。   2多表连接查询分类   在实际工作中,所查询的内容往往涉及多张表,连接查询是关系数据库中最主要的查询方式,在sqlserver中连接查询类型分为交叉连接、内连接、外连接和自连接。   2.1交叉连接   交叉连接也称非限制连接,它是将两个表不加任何约束地组合起来。也就是将第一个表的所有行分别与第二个表的每一行形成一条新的记录,交叉连接在实际应用中一般是没有意义的,但在数据库的数学模型上有重要作用。   2.2内连接   内连接也称自然连接,它是组合两个表的常用方法。连接条件通常采用“主键=外键”的形式,也就是说在两个表中匹配的记录才能在结果集中出现。   例如:有学生(学号、姓名、性别、专业),成绩(学号、课程号、分数)两个表,要查询选修了‘a001’课程的学生的姓名和专业。查询语句如下:   select学生.学号,姓名,专业   from学生join成绩on学生.学号=成绩.学号   where课程号=‘a001’   2.3外连接   (1)在外连接中可以只限制一个表,而另一个表中的所有行都出现在结果集中。外连接分为左外连接、右外连接和全外连接。分别对左表、右表和左右两边的表不加限制。   例如:如果我们想查看所有的学生选修a001课程的成绩情况,就可以使用左外连接。查询语句如下:   select姓名,专业,课程号,分数   from学生leftjoin成绩on学生.学号=成绩.学号   where课程号=‘a001’   以上问题也可以使用右外连接。查询语句如下:   select姓名,专业,课程号,分数   from成绩rightjoin学生on成绩.学号=学生.学号   where课程号=‘a001’   这种情况下会以学生表为主,返回所有学生的信息,同时选修了a001课程的显示分数,没有选修a001课程的显示null   (2)全外连接结果集中除返回左表和右表内部连接的记录以外,还在查询结果中返回两个表中不符合条件的记录,并在左表或右表的相应列中填上null,bit类型以0值填充。   例如:有学生会(学号,姓名),人员分工(学号,职务)两个表,如果想查看学生会中的所有学生,哪些学生分配了职务,哪些学生还没有职务;学生会共设置了多少职务种类,哪些职务已经有人担任,哪些职务还有空缺,这时候就可以使用全外连接。查询语句如下:   select学生会.学号,姓名,职务   from学生会fulljoin人员分工on学生会.学号=人员分工.学号   这种情况下会返回学生会中所有学生学号、姓名,同时也会返回人员分工表里面的所有职务,没有职务的学生,职务填充null,没有分配出去的职务,姓名填充null。   3查询优化策略   连接的表越多,条件表达式越繁琐,查询的复杂度就越高,所消耗时间就越长。因此在进行查询时我们应当在能返回正确查询结果的前提下,尽可能的降低查询时间,提高查询效率。   3.1连表宜少不宜多   例如:有學生(学号、姓名、性别、专业),成绩(学号、课程号、分数),课程(课程号,课程名,学时数)三个表。查询选修‘a001’课程的学生学号、姓名和课程号。可以用以下两种方法实现:   方法一   select学生.学号,姓名,课程.课程号   from学生join成绩on学生.学号=成绩.学号   join课程on成绩.课程号=课程.课程号   where课程号=‘a001’   方法二   select学生.学号,姓名,成绩.课程号   from学生join成绩on学生.学号=成绩.学号
显示全部
相似文档