社区
Oracle 高级技术
帖子详情
怎么检测出sql中的笛卡尔连接?
kingstarer
2015-06-05 04:40:59
想开发一个功能,可以检测sql中是否含有笛卡连接(即在from出现的表,但在where条件中不与其它表关连)
不知道有啥好办法(考虑过利用explain plan分析sql后到plan_table里面分析数据,但对于sql里面有dblink的情况下就不适用了)
...全文
440
5
打赏
收藏
怎么检测出sql中的笛卡尔连接?
想开发一个功能,可以检测sql中是否含有笛卡连接(即在from出现的表,但在where条件中不与其它表关连) 不知道有啥好办法(考虑过利用explain plan分析sql后到plan_table里面分析数据,但对于sql里面有dblink的情况下就不适用了)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
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条件里面字段都会加上别名限制
SQL
高级查询技术.doc
SQL
高级查询技术.doc
SQL
的
笛卡尔
积简记
SQL
的
笛卡尔
积简记 摘要: 简单记录一下
SQL
中
的
笛卡尔
积与简单应用; 1 什么是
笛卡尔
积? /* * 什么是
笛卡尔
积? *
笛卡尔
积:在
SQL
中
的实现方式就是交叉链接(CROSS join) 所有
连接
方式都会 * 生成临时
笛卡尔
积表;
笛卡尔
积是关系代数里的一个概念,表示两个表
中
的每一行数据任意组合. * 在实际应用
中
,
笛卡尔
积本身大多没有什么实际应用,只有两张表
连接
查询时加上限制条件,才会有意义 */ 2
笛卡尔
积产生的原因 /* *
笛卡尔
积产生的原因? * 1 表
连接
缺少关联
sql
笛卡尔
积和自然
连接
特殊的等值
连接
,要求多个表有相同的属性字段,条件为相同的属性字段值相等,且再将表
中
重复的属性字段去掉,称为自然
连接
。
SQL
中
的
笛卡尔
积可以与
SQL
内
连接
相互转化。
笛卡尔
积加查询条件等价于内
连接
查询。结果集的行是表1的行数乘表2的行数(2x3)结果集的列是表1的列加表2的列(3+4)可以简单理解为两个集合的乘积。
SQL
中
的
笛卡尔
积
进一步可以发现
笛卡尔
积和内
连接
的
sql
语句可以相互转化,这对我们理解内
连接
的本质和
笛卡尔
积的查询条件很重要内
连接
不加关联条件的结果就是
笛卡尔
积
笛卡尔
积在表数据量大的情况下查询结果会倍增,实际应用
中
一般会加查询条件过滤数据怎么理解迪卡儿积
中
的查询条件,可以将
笛卡尔
积
sql
转化成内
连接
sql
去理解。
什么是
笛卡尔
积及其在
SQL
查询
中
的应用
通过本文,您了解了
笛卡尔
积的概念及其在
SQL
查询
中
的应用场景和基本语法。
笛卡尔
积在处理多表组合、生成排列组合等方面有重要作用,但需要注意在实际应用
中
可能产生的数据量和性能影响。是集合论
中
的概念,指的是两个集合的所有可能组合。在关系数据库
中
,
笛卡尔
积是指两个表
中
所有行的组合,结果是一个新表,其
中
每一行是来自两个原始表的一对行。这将返回所有员工和部门的组合,每个员工都会与每个部门进行组合,得到
笛卡尔
积。的
笛卡尔
积,即两个表
中
所有可能的行组合。这可以用于市场分析或推荐系统
中
的数据处理。在
SQL
中
,可以使用。
Oracle 高级技术
3,494
社区成员
18,710
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章