社区
Oracle 高级技术
帖子详情
怎么检测出sql中的笛卡尔连接?
kingstarer
2015-06-05 04:40:59
想开发一个功能,可以检测sql中是否含有笛卡连接(即在from出现的表,但在where条件中不与其它表关连)
不知道有啥好办法(考虑过利用explain plan分析sql后到plan_table里面分析数据,但对于sql里面有dblink的情况下就不适用了)
...全文
424
5
打赏
收藏
怎么检测出sql中的笛卡尔连接?
想开发一个功能,可以检测sql中是否含有笛卡连接(即在from出现的表,但在where条件中不与其它表关连) 不知道有啥好办法(考虑过利用explain plan分析sql后到plan_table里面分析数据,但对于sql里面有dblink的情况下就不适用了)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
高级查询技术的核心,主要用于从两个或多个表
中
检索数据,实现数据的整合与关联。这种技术对于处理复杂的数据关系至关重要,特别是在企业级数据库应用
中
。 **1. ANSI链接** ANSI(American National ...
SQL
的
笛
卡
尔积简记
*
笛
卡
尔积:在
SQL
中
的实现方式就是交叉链接(CROSS join) 所有
连接
方式都会 * 生成临时
笛
卡
尔积表;
笛
卡
尔积是关系代数里的一个概念,表示两个表
中
的每一行数据任意组合. * 在实际应用
中
,
笛
卡
尔积本身大多没有什么...
sql
笛
卡
尔积和自然
连接
SQL
中
的
笛
卡
尔积可以与
SQL
内
连接
相互转化。
笛
卡
尔积加查询条件等价于内
连接
查询。结果集的行是表1的行数乘表2的行数(2x3)结果集的列是表1的列加表2的列(3+4)可以简单理解为两个集合的乘积。
SQL
中
的
笛
卡
尔积
进一步可以发现
笛
卡
尔积和内
连接
的
sql
语句可以相互转化,这对我们理解内
连接
的本质和
笛
卡
尔积的查询条件很重要内
连接
不加关联条件的结果就是
笛
卡
尔积
笛
卡
尔积在表数据量大的情况下查询结果会倍增,实际应用
中
一般会...
my
sql
内
连接
、左
连接
会
出
现
笛
卡
尔积?
这周的部门周会,分享的同事说的是数据库优化相关,过程
中
,一个同事跟我讨论左
连接
查询,是不是
笛
卡
尔积。我第一反应,左
连接
肯定不是
笛
卡
尔积啊,左
连接
是以左表为准,左表有m条记录,则结果集是m条记录(哈哈,...
Oracle 高级技术
3,491
社区成员
18,712
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章