社区
Oracle 高级技术
帖子详情
怎么检测出sql中的笛卡尔连接?
kingstarer
2015-06-05 04:40:59
想开发一个功能,可以检测sql中是否含有笛卡连接(即在from出现的表,但在where条件中不与其它表关连)
不知道有啥好办法(考虑过利用explain plan分析sql后到plan_table里面分析数据,但对于sql里面有dblink的情况下就不适用了)
...全文
403
5
打赏
收藏
怎么检测出sql中的笛卡尔连接?
想开发一个功能,可以检测sql中是否含有笛卡连接(即在from出现的表,但在where条件中不与其它表关连) 不知道有啥好办法(考虑过利用explain plan分析sql后到plan_table里面分析数据,但对于sql里面有dblink的情况下就不适用了)
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
binsweet
2015-08-21
打赏
举报
回复
自动检测? 每个sql写完,至少你要验证一下结果吧,这最直观了
xu176032
2015-08-19
打赏
举报
回复
1、检查各种join,left join,right join,full join等等。。 2、把每个sql里面from 后面的截取一下,看看有没有别名,规则就是从from到第几个空格,大概这样 3、如果存在别名,拿这个别名去sql里面遍历一下,看看有没有在等号左右边都存在的。。当然前提是外联的时候都用了别名。 其实跟你那个差不多。。随便写的,参考一下吧
mayanzs
2015-08-19
打赏
举报
回复
要去除自然连接的情况,否则会错报。
qq_30691381
2015-08-18
打赏
举报
回复
加我qq52029056
kingstarer
2015-06-08
打赏
举报
回复
想了一个算法 不知道有没有漏洞 大家帮看看 1 取出语句所有关联的表及别名 2 将where条件转换成大写 3 按'AND' 'OR'拆分where条件成多个语句段(需要考虑字段名包含and或者or字样) 4 遍历拆分结果,对于每个语句段用'='将语句段拆分成左右两部分 5 查找左右两边出现的别名(xx.),如果两边均出现别名(例如左边出现a.,右边出现b.),则标记别名对应的库表已关连(需要注意别名中类似:b. bb. cbb.这样的情况) 6 找出未关连的库表,如有则返回警告 ========================== 这里前提是where条件里面字段都会加上别名限制
相关推荐
My
SQL
视频教程-经典My
SQL
面试题
这些
sql
题目几乎涵盖了工作
中
常用的
sql
语句,包括内
连接
中
的等值
连接
,非等值
连接
,自
连接
,又包括了外
连接
中
的左外和右外
连接
。如果想要复习
sql
,直接将34道作业题做一遍,你就满血了。
SQL
的
笛卡尔
积简记
SQL
的
笛卡尔
积简记 摘要: 简单记录一下
SQL
中
的
笛卡尔
积与简单应用; 1 什么是
笛卡尔
积? /* * 什么是
笛卡尔
积? *
笛卡尔
积:在
SQL
中
的实现方式就是交叉链接(CROSS join) 所有
连接
方式都会 * 生成临时
笛卡尔
积表;
笛卡尔
积是关系代数里的一个概念,表示两个表
中
的每一行数据任意组合. * 在实际应用
中
,
笛卡尔
积本身大多没有什么实际应用,只有两张表
连接
查询时加上限制条件,才会有意义 */ 2
笛卡尔
积产生的原因 /* *
笛卡尔
积产生的原因? * 1 表
连接
缺少关联
数据库之
SQL
笛卡尔
积
数据库之
SQL
笛卡尔
积 1.
笛卡尔
积定义
笛卡尔
积在
SQL
中
的实现方式既是交叉
连接
(Cross Join)。所有
连接
方式都会先生成临时
笛卡尔
积表,
笛卡尔
积是关系代数里的一个概念,表示两个表
中
的每一行数据任意组合,上图
中
两个表
连接
即为
笛卡尔
积(交叉
连接
)...
SQL
中
的
笛卡尔
积
进一步可以发现
笛卡尔
积和内
连接
的
sql
语句可以相互转化,这对我们理解内
连接
的本质和
笛卡尔
积的查询条件很重要内
连接
不加关联条件的结果就是
笛卡尔
积
笛卡尔
积在表数据量大的情况下查询结果会倍增,实际应用
中
一般会加查询条件过滤数据怎么理解迪卡儿积
中
的查询条件,可以将
笛卡尔
积
sql
转化成内
连接
sql
去理解。
my
sql
等值
连接
概念_My
sql
(
笛卡尔
积、等值
连接
、自然
连接
、外
连接
)
1、
笛卡尔
积:
笛卡尔
积的元素是元组,关系A和B的
笛卡尔
积可以记为(AXB),如果A为a目,B为b目,那么A和B的
笛卡尔
积为(a+b)列的元组集合。(1)学生表和分数表
中
的信息:学生表:分数表(大概就是这个样子):(2)学生表和分数表执行
笛卡尔
积后:可以看
出
,执行
sql
语句后,student表
中
的每一条语句分别与score表
中
的每一条语句
连接
。2、内
连接
:内
连接
又称为普通
连接
或自然
连接
。在说自然
连接
...
发帖
Oracle 高级技术
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
3477
社区成员
1.8w+
社区内容
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2015-06-05 04:40
社区公告
暂无公告