首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL中的递归查询

    递归查询原理 SQL Server中的递归查询是通过CTE(表表达式)来实现。...在逻辑上可以将CTE名称的内部应用理解为前一个查询的结果集。 递归查询的终止条件 递归查询没有显式的递归终止条件,只有当第二个递归查询返回空结果集或是超出了递归次数的最大限制时才停止递归。...USE SQL_Road GO CREATE TABLE Company ( 部门ID INT, 父级ID INT, 部门名称 VARCHAR(10) ) INSERT...在查询语句中调用中CTE,而查询语句就是CTE的组成部分,即 “自己调用自己”,这就是递归的真谛所在。...具体结果如下: 以上就是递归查询的一些知识介绍了,自己可以动手实验一下,这个一般在面试中也经常会考察面试者,希望能帮助到大家~

    25611

    Oracle中的SQL优化

    同一功能同一性能不同写法SQL的影响(使用ORACLE的共享SQL程序)     如一个SQL在A程序员写的为:Select * from zl_yhjbqk     B程序员写的为:Select *...在ORACLE分析整理之后产生的结果及执行的时间是一样的,但是从ORACLE共享内存SGA的原理,可以得出ORACLE对每个SQL 都会对其进行一次分析,并且占用共享内存,如果将SQL的字符串及格式写得完全相同则...    b.查询表顺序的影响     在FROM后面的表中的列表顺序会对SQL执行性能影响,在没有索引及ORACLE没有对表进行统计分析的情况下ORACLE会按表出现的顺序进行链接,由此因为表的顺序不对会产生十分耗服务器资源的数据交叉...的HINT(提示)处理:提示处理是在ORACLE产生的SQL分析执行路径不满意的情况下要用到的。...根据实践应用,一般不建议开发人员应用ORACLE提示,因为各个数据库及服务器性能情况不一样,很可能一个地方性能提升了,但另一个地方却下降了,     ORACLE在SQL执行分析方面已经比较成熟,

    1.9K20

    【DB笔试面试609】在Oracle中,SPM(SQL Plan Management,SQL计划管理)是什么?

    ♣ 题目部分 在Oracle中,SPM(SQL Plan Management,SQL计划管理)是什么? ♣ 答案部分 Outline的缺点是太过死板,当数据量大幅度变化时无法做出相应的改变。...在Oracle 11g中,Oracle提供DBMS_SPM包来管理SQL Plan,SPM是一种预防机制,它记录并评估SQL的执行计划,将已知的高效的SQL执行计划建立为SQL计划基线。...在SQL计划基线捕获阶段,Oracle记录SQL的执行计划并检测该执行计划是否已经改变。...对于要从STS加载到SQL计划基线的SQL语句,需要将其SQL计划存储在STS中。使用DBMS_SPM可以将基线计划的状态从已接受更改为未接受或者从未接受更改为已接受。...=> '7qqnad1j615m7'); END; / 在SQL计划基线演化阶段,Oracle会按常规方式评估新计划的性能,并将性能较好的计划集成到SQL计划基线中。

    87210

    Oracle中的基本SQL知识

    什么是SQL语言 a) SQL, Structured Query Language, 结构化查询语言 b) SQL 是最重要的关系数据库操作语言,是所有关系数据库 管理系统的标准语言....c) SQL 语言是非过程化的语言, 只需要告诉做什么, 不需要 关注怎么做, 简单....开始设置使用Oracle时的相关准备 设置字体 ? 关闭自动备份,避免生成同名文件 ? select基本语句 一般使用的是Oracle自带的scott用户,密码默认为tiger,不过要手动创建一下。...d) 在 Oracle 中, 双引号表示原样输出. select ename, job, sal*12 "ni a n xin" from emp; 5、 distinct 用于去除重复行信息 a)...查询所有员工的姓名和年薪, 按照年薪排序 select ename, sal*12 nianxin from emp order by nianxin desc; where子句 1、等值条件 c) 查询在

    1.1K20

    【DB笔试面试570】在Oracle中,SQL优化在写法上有哪些常用的方法?

    ♣ 题目部分 在Oracle中,SQL优化在写法上有哪些常用的方法? ♣ 答案部分 一般在书写SQL时需要注意哪些问题,如何书写可以提高查询的效率呢?...实际上,Oracle在解析的过程中,会将“*”依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。...(16)在Oracle数据库里,IN和OR是等价的,优化器在处理带IN的目标SQL时会将其转换为带OR的等价SQL。...这里的第二点需要注意平衡,如果联合索引的联合列太多,必然导致索引过大,虽然消减了回表动作,但是索引块变多,在索引中的查询可能就要遍历更多的BLOCK了,所以需要全面考虑,联合索引列不宜过多,一般来说超过...(31)在删除(DELETE)、插入(INSERT)、更新(UPDATE)频繁的表中,建议不要使用位图索引。 (32)对于分区表,应该减少需要扫描的分区,避免全分区扫描。

    3.6K30

    【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?

    ♣ 题目部分 在Oracle中,如何使用STA来生成SQL Profile? ♣ 答案部分 利用STA对语句进行优化后,STA会对语句进行分析,采用最优的优化策略,并给出优化后的查询计划。...但是,有些情况下,你可能无法重写语句(比如在生产环境中,SQL语句又在一个包中)。...这个时候就可以利用Sql Profile,将优化策略存储在Profile中,Oracle在构建这条语句的查询计划时,就不会使用已有相关统计数据,而使用Profile的策略,生成新的查询计划。...在10g中,每个会话都有一个新参数SQLTUNE_CATEGORY,他的默认值是DEFAULT。...并且在查询计划中还有一些附加信息,表明这个语句是采用了“SYS_SQLPROF_0154e728ad3f0000”这个Profile,而不是根据对象上面的统计数据来生成的查询计划。

    2.7K20

    【DB笔试面试575】在Oracle中,SQL语句的执行过程有哪些?

    ♣ 题目部分 在Oracle中,SQL语句的执行过程有哪些? ♣ 答案部分 Oracle数据库里SQL语句的执行过程可以如下图所示: ?...在查询转换过程中,Oracle会根据一些规则来决定是否对目标SQL执行查询转换,这些规则在Oracle不同的版本里不尽相同。...在Oracle 9i中,查询转换是独立于优化器的,它与优化器的类型无关,但是从Oracle 10g开始,Oracle会对某些类型的查询转换(比如子查询展开、复杂视图合并等)分别计算经过查询转换后的等价改写...只有当等价改写后SQL的成本值小于未经过查询转换的原始SQL的成本值时,Oracle才会对目标SQL执行查询转换。在执行完查询转换后,原目标SQL可能就被Oracle改写了,当然也有可能没有改写。...(5)在得到了目标SQL的执行计划后,接下来Oracle就会根据执行计划去实际执行该SQL,并将执行结果返回给用户。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1.4K10

    【DB笔试面试569】在Oracle中,SQL如何优化?SQL优化的关注点有哪些?

    ♣ 题目部分 在Oracle中,SQL如何优化?SQL优化的关注点有哪些? ♣ 答案部分 随着数据库中数据量的增长,系统的响应速度就成为目前系统需要解决的最主要的问题之一。...对于一个系统不是简单地能实现其功能就可以了,而是要写出高质量的SQL语句,提高系统的可用性。 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。...(8)业务需求需要正确理解,实现业务的逻辑需要正确,减少一些重复计算。有可能是设计的不合理、业务需求的不合理,而问题SQL并非根本原因。...(13)在创建表的时候,应尽量建立主键,可以根据实际需要调整数据表的PCTFREE参数。 SQL优化的一般性原则如下所示: l 目标: 减少服务器的资源消耗(主要是磁盘I/O)。...l 编码方面: 参考【1.2.5.2 SQL优化在写法上有哪些常用的方法?】。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1K20

    【DB笔试面试576】在Oracle中,简述Oracle中的游标。

    ♣ 题目部分 在Oracle中,简述Oracle中的游标。 ♣ 答案部分 在介绍游标之前先介绍一下Oracle数据库中库缓存(Library Cache)的作用及其组成结构。...当同样的SQL语句和PL/SQL语句再次被执行的时候就可以直接利用已经缓存在库缓存中的那些相关对象而无须再次从头开始解析,这样就提高了这些SQL语句和PL/SQL语句在重复执行时的执行效率。...接下来需要明白如下几个概念: l 库缓存对象(Library Cache Object,LCO):缓存在库缓存中的对象被称之为库缓存对象,包括SQL语句、PL/SQL语句、表、索引、包、触发器等。...当Oracle要执行目标SQL“select * from lhr.emp”时,首先会对该SQL的SQL文本进行哈希运算,然后根据得到的哈希值找到相关的Hash Bucket,在Hash Bucket中遍历对应的库缓存对象句柄链表...② 对每一个库缓存对象而言,都或多或少需要往库缓存中存储一些该库缓存对象所特有的动态运行时(runtime)数据,比如SQL语句所对应的库缓存对象就需要在库缓存中缓存该SQL语句所对应的编译好的二进制格式的执行计划

    1.3K20
    领券