SQL刷题专栏 SQL145题系列 本文系粉丝投稿,欢迎有写技术文章的小伙伴投稿 Vintage分析 Vintage分析用到信贷资产行业,指的是每个月贷款的资产质量情况,要直接跟每个相同时间段内的余额做比较...注意这里比较有个前提,就是比较的事物应该是位于同一层面上的,不能将不同账龄的放款质量进行对比,要按账龄(month of book,MOB)的长短同步对比,从而了解同一产品不同时期放款的资产质量情况。...在此基础上,按照账龄为经营时间减去发卡时间进行表间数据的转换,得到MOB,得到表2: 通过vintage报表,可以看出,不同月份的发卡账户的同一mob下的拖欠率的变化情况。...这里我们的需求是:怎么将表1格式的数据转换成表2格式的数据?...: 如果对LEAD函数使用有疑问的朋友,可以先阅读LEAD函数的具体介绍: SQL Server中的LAG函数与LEAD函数介绍 select date_faka, M3,M4, M5, M6, M7,
SQL中的DML、DDL以及DCL是什么?...DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言...DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型...,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。...DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。
Oracle调优之no_unnest和unnest用法简介 本博客介绍Oracle SQL调优的一种常用也是很实用的方法,也即/*+no_unnest */和/*+ unnest*/,介绍Oracle...sql不改写的情况是可以起到作用的,如果sql改变,hint语法很有可能影响SQL性能,所以使用hint调优并非上策 我遇到的sql是很复杂的,不过本文进行简单描述,其SQL语法类似如下,省略很多的情况...然后通过执行计划查询,性能并没有提升,unnest是让子查询展开,和外部的查询进行关联、合并,首先t1是一张数据量很多的表,然后SQL里先left join了t1,又在子查询里使用了t1,如果unnest...,所以请作者可以不管我的案例,只要理解unnest和no_unnest的用法即可,sql调优是很复杂,需要很多调优经验才可以做到游刃有余的,本博客观点,仅代表本人观点,因为对sql调优本没有深入理解,所以也并没有特别推崇使用...unnest或者no_unnest,这两种用法具体在什么环境使用适宜?
然后客户把sql代码和升级前后的执行计划截图发给了我,我马上就知道了原因:这个sql使用了12c的标量子查询嵌套的新特性(Scalar Subquery Unnest),在2014年的一个内部技术交流中...,我还着重讲了这个12c的新特性.于是,我很快给出了以下建议: 影响执行计划的真正参数是_optimizer_unnest_scalar_sq,可以通过/*+ OPT_PARAM('_optimizer_unnest_scalar_sq...如果有很多类似SQL,则建议在系统级关闭:alter system set "_optimizer_unnest_scalar_sq"=false; (因为是升级的系统,这个改动不会有任何影响,原来的版本就没有这个功能...), 说明这个参数对提升当前SQL性能还是有很大的帮助....为什么会有这么大的差别? 应该是优化器没有更好地做cost评估,把不该unnest的执行计划,强行做了unnest.
♣ 题目部分 在Oracle中,SQL概要(SQL Profile)的作用是什么?...♣ 答案部分 SQL Profile就是为某条SQL语句提供除了系统统计信息、对象(表和索引等)统计信息之外的其它信息,比如运行环境、额外的更准确的统计信息,以帮助优化器为SQL语句选择更适合的执行计划...使用SQL Profile的两个目的:①锁定或者说是稳定执行计划。②在不能修改应用中的SQL的情况下使SQL语句按指定的执行计划运行。...SQL Profile最大的优点是在不修改SQL语句和会话执行环境的情况下去优化SQL的执行效率,适合无法在应用程序中修改SQL时。...('FULL(t1@SEL$1)')是这里的格式如何写,在Mos上的文章note 215187.1中的sqlt.zip的目录utl中提供了脚本coe_xfr_sql_profile.sql可以生成这些信息
在 1994 年,Andrew Yu 和 Jolly Chen 向 Postgres 中增加了 SQL 语言的解释器,并随后用新名字“Postgres95”将源代码发布到互联网上供大家使用,成为最初 Postgres...于是伯克利 Postgres 项目选择了一个新名字 PostgreSQL 来反映与最初的 Postgres 和最新的具有 SQL 能力的版本之间的关系。...为了解决开源数据库存在的种种弊端,一些基于开源数据库的商业公司应运而生。 但要想成功运营,也并非容易事。 运营一家基于开源数据库的商业公司到底会面对哪些挑战?开源服务的价值是什么?...InfoQ:目前全球数据库市场上几百款数据库产品,您认为 PostgreSQL 为什么能取得成功?...借助 EDB,PostgresSQL 的功能得到显著增强,能够提供无与伦比的灵活性、可扩展性和成本优势。 3 PostgresSQL 在数字化转型中起到了怎样的作用?
view_name AS SELECT column1, column2 FROM table WHERE condition 删除视图:DROP VIEW DROP VIEW view_name 需要说明的是...,SQLite 不支持视图的修改,仅支持只读视图,也就是说你只能使用 CREATE VIEW 和 DROP VIEW,如果想要修改视图,就需要先 DROP 然后再 CREATE。...如何使用视图简化 SQL 操作 利用视图完成复杂的连接 CREATE VIEW player_height_grades AS SELECT p.player_name, p.height, h.height_level
有时候用户写的 SQL,对于优化器来说并不一定是最好的,可能作出的执行计划不会用到合适的结合处理。 所以,CBO 会在作执行计划之前,用一堆十分难懂的机能去转换用户作的 SQL。...子查询展开机能(Subquery Unnesting) 通常情况下,SQL 的特点是用到了 IN,NOT IN, EXISTS, NOT EXISTS 子句。...所以,子查询展开机能隆重登场,下面我们来看一下,利用子查询展开机能后,上面处理会变成什么样。...SQL 都会转换成下面这个 SQL,T1 和 T2 进行 JOIN。...有以下两种方法: 隐含参数 _UNNEST_SUBQUERY 设置成 false OR 最开始例子里面用到的 NO_UNNEST hint。
SQL内置函数使用大全 本文中总结了SQL中常用的内置函数,包含通用聚合函数、安全检测函数、数学统计函数、字符串函数等 ?...什么是窗口函数 窗口函数,也叫OLAP函数(online anallytical processing,联合分析处理)。窗口函数是用来跨行计算的。...普通的SQL聚合函数是只能用来处理计算一行内的结果,窗口函数可以跨行计算,并且把结果填到每行中 基本语法 over (partition by 的列名>...用于时序函数比较,需要在SQL中对时间列进行GROUP BY。...以上样例等同于SELECT 3 6; 如果三个参数中任何一个包含Null,则返回的结果为Null。
使用 no_unnest hint可以让执行计划产生filter,即不展开,但一般情况下使用unnest hint无法消除filter。...IN (select index_name from dba_indexes where UNIQUENESS ='NONUNIQUE') GROUP BY SEGMENT_NAME; 耗时一分钟,为什么这么慢呢...在SQL语句where子查询后有not in、not exists、in、exists时,CBO会尝试将子查询展开(unnest)消除filter,但是上面的例子CBO并没有做到,下面我们看下执行计划。...103001.png 我们再看下在子查询中加unnest hint的执行计划: SELECT SEGMENT_NAME,SUM(BYTES/1024/1024) m FROM DBA_SEGMENTS...NOT IN(NOT EXISTS)后的SQL语句多次执行,本来数据量就很大,每次都要执行一遍,结果可想而知。
编辑手记:子查询是SQL中比较重要的一种语法,恰当地应用会很大程度上提高SQL的性能,若用的不得当,也可能会带来很多问题。因此子查询也是SQL比较难优化的部分。...那为什么默认没有进行子查询合并呢?...部分子查询反嵌套属于启发式查询转换,部分属于基于代价的转换。 系统中存在一个参数来控制解嵌套子查询—_unnest_subquery。...参数_unnest_subquery在8i中的默认设置是false,从9i开始其默认设置是true。然而9i在非嵌套时不考虑成本。只有在10g中才开始考虑两种不同选择的成本,并选取成本较低的方式。...当从8i升级到9i时,可能想阻塞某些查询的非嵌套。利用子查询中的no_unnest提示可以完成这一点。
Flink中的流式SQL是什么?请解释其作用和用途。 Flink中的流式SQL是什么?作用和用途解释 Flink是一个开源的流式处理框架,它支持使用SQL语言来处理流式数据。...流式SQL是Flink中的一种编程模型,它允许用户使用类似于传统关系型数据库的SQL语句来处理无限流式数据。...流式SQL的作用是简化流式数据处理的编程模型,使得开发人员可以使用熟悉的SQL语言来进行数据分析和处理。...例如,可以使用流式SQL计算每个小时的销售总额、用户活跃度等指标,并将结果实时推送到报表系统中。 实时监控和告警:使用流式SQL可以对实时流数据进行监控和告警。...例如,可以使用流式SQL将多个数据源的数据合并到一起,并实时同步到目标系统中。 通过使用流式SQL,开发人员可以更加方便地进行流式数据处理,并且可以充分利用Flink的优化和扩展能力。
在上周恩墨微信大讲堂的讨论中,几个有趣的视图跃入我们的视野,可以分享给大家。 在Oracle 11g中,新增的视图V$SQL_HINT记录了Oracle数据库中的可用Hint及其历史。...如果串起来,这几个视图的关系极大:V$SQL_FEATURE,V$SQL_FEATURE_HIERARCHY,V$SQL_HINT,通过这几个视图可以了解Oracle的SQL特性,继承关系,以及可用Hint...(*) ---- ---------- 11 66 10 80 9. 39 8. 88 在12c的版本中,查询统计如下。...(*) ---- ---------- 11 70 12 76 10 80 9. 39 8. 85 在V$SQL_HINT中还有一个有趣的字段:INVERSE...视图中,字段SQL_FEATURE显示了SQL特点信息,这个内容就可以从V$SQL_FEATURE中获得更详细的注释。
题目部分 SQL*Plus中&与&&的区别是什么? 答案部分 &用来创建一个临时变量,每当遇到这个临时变量时,都会提示输入一个值。...&&用来创建一个持久变量,就像用DEFINE命令或带NEW_VLAUE子句的COLUMN命令创建的持久变量一样。...例如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入DEPTNOVAL的值: SELECT COUNT(*) FROM SCOTT.EMP WHERE DEPTNO = &DEPTNOVAL...SELECT COUNT(*) FROM SCOTT.EMP WHERE DEPTNO = &DEPTNOVAL; 将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入DEPTNOVAL的值
题目部分 SQL*Plus中@和@@的区别是什么? 答案部分 @和@@都可以调用脚本,它们的不同之处如下所示: @等于start命令,用来运行一个SQL脚本文件。...@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。...@@用在脚本文件中,用来指定“@执行的脚本文件”与“@@执行的脚本文件”在同一目录,而不用指定全路径,也不从SQLPATH环境变量指定的路径中寻找文件,该命令一般用在嵌套脚本文件中。
SQL语言分为五大类:DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。DQL(数据查询语言) - Select 查询语句不存在提交问题。...SQL主键和外键:结论主键和外键是数据库设计中的重要概念,因为它们有助于建立表之间的关系并帮助确保数据的完整性。...什么是主键主键是表中的一个列(或一组列),用于唯一地识别表中的每一行。它不能包含空值,并且在表中的所有行中必须是唯一的。一个表中只允许有一个主键。...什么是外键外键是一个表中的一个列(或一组列),指的是另一个表中的主键。它被用来在两个表之间建立联系,并被用来在数据库中执行参考完整性。外键基本上是一个表中的字段/列,类似于其他表的主键。...总结本文主要是对SQL分类,以及主键外键的区别进行了描述,这是一个基本的面试题,希望能够帮助大家解决这一类的面试问题。
本来关于 CBO 的 SQL 自动转换的介绍计划在上一次就想收口了,但突然间又想到了几个机能,看来还是要继续弄吧。...话不多说,还是马上上例子,在没用到子查询关联集展开机能之前,下面的 Case 会是什么样子。...即,用子查询的 filter 的结果来对主查询进行 filter,只不过这次,子查询中 t1,t2 表作了 UNION ALL。...SQL> alter session set "_optimizer_unnest_corr_set_subq" = TRUE; SQL> select key from drv where exists...那么到底是不是 CBO 内部自动转化了用户的 SQL 呢。还是看看 CBO 的 Trace 吧。
后来我就只能使用SQL语句进行创建了create database newDB,OK,创建成功。...PostgreSQL: \c dbname (3)列出当前数据库下的数据表 MySQL: show tables PostgreSQL: \d (4)列出指定表的所有字段 MySQL: show...postgres with password 'new password'; (8)查看所有用户 PostgreSQL: select * from pg_roles; (9)查看表空间(tablespace) PostgresSQL...: \db(或者select * from pg_tablespace;但是使用SQL查询看到的结果和\db命令不太一样,SQL显示的是表中存储的元数据) (10) 切换用户 PostgresSQL:...PostgresSQL: select current_database(); (12) 查询PostgreSQL中的Schema select schema_name from information_schema.schemata
♣ 题目部分 在Oracle中,coe_load_sql_profile.sql脚本的作用是什么?...♣ 答案部分 可以使用coe_load_sql_profile.sql脚本直接固定执行计划,该脚本也可以实现直接把sqlprofile直接迁移到其它库中。...很多DBA习惯于使用coe_xfr_sql_profile.sql脚本来固定SQL执行计划,但是这个脚本操作起来比较麻烦,而且容易出错。这个脚本的正确用途是用来做不同数据库之间SQL执行计划的固定。...最方便的脚本是:coe_load_sql_profile.sql,使用这个脚本,只需要输入几个参数,就能完成快速恢复执行计划的任务。...SQL> 6.查看产生的sql profile,此时原语句在不加hint的情况下也走全表扫了select * from dba_sql_profiles; SQL>set line 9999 SQL>
领取专属 10元无门槛券
手把手带您无忧上云