高分求助!将一个sql文优化(现在的执行效率太低了),谢谢。

Iris 2005-11-09 12:02:30
SQL文如下:
UPDATE tableA
SET FLAG = 1
WHERE FLAG <> 1
AND fieldA NOT IN
(SELECT substr(fieldA,1,8)||max(substr(fieldA,9,2))
FROM tableA
GROUP BY substr(fieldA,1,8))

他的功能是,将表A中的若干条记录的flag设置成1,条件是:
如果该表中fieldA列的值的前8位相同,那么将后两位中不是最大的纪录进行设置,
举个例子:
如果fieldA的值有AAAAAAAA01,AAAAAAAA02,AAAAAAAA03,
那么将AAAAAAAA01,AAAAAAAA02对应的纪录的flag进行设置。
现在表A中有两万条数据,上述sql文执行需要6分钟,怎么才能提高效率呢。谢谢!
...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2005-11-09
  • 打赏
  • 举报
回复
应该用exists子句
kulama2004 2005-11-09
  • 打赏
  • 举报
回复
1.explain plan你的sql语句
UPDATE tableA
SET FLAG = 1
WHERE FLAG <> 1
AND fieldA NOT IN
(SELECT substr(fieldA,1,8)||max(substr(fieldA,9,2))
FROM tableA
GROUP BY substr(fieldA,1,8))
看看到底那里cost比较大,问题出在哪里

2.tableA的FLAGH和fieldA字段有没有作过index?没有就加index


3 not in 和not exists不是一定说哪个更快,不能一概而论,有时候是not in快,有时候是not exists快,有时候一样快,关键还是要看执行计划,不能人云亦云
xjqqxjqq 2005-11-09
  • 打赏
  • 举报
回复
UPDATE tableA a
SET FLAG = 1
WHERE FLAG <> 1
AND NOT EXISTS
(SELECT 1
FROM tableA b
where a.fieldA=substr(b.fieldA,1,8)||max(substr(b.fieldA,9,2))
GROUP BY substr(fieldA,1,8))
试试吧
xujiaqiang 2005-11-09
  • 打赏
  • 举报
回复
flag上建立bitmap索引,将flag<>1改为 flag > 1 || flag < 1
内容概要:本研究基于粒子群算法(PSO)优化模糊C均值聚类(FCM)的居民用电行为分析方法,提出一种改进的FCM聚类算法,通过引入粒子群优化机制,有效提升聚类性能与收敛效率,克服传统FCM算法易陷入局部最优、对初始聚类中心敏感等缺陷。研究基于Matlab平台实现算法代码,对居民用电负荷数据进行聚类分析,识别不同用户的典型用电模式与行为特征,进而支持电力系统的需求侧精细化管理、用户分群运营、个性化用电服务推荐以及中长期负荷预测。该方法在智能电网与大数据背景下展现出良好的应用前景,特别适用于大规模居民用电数据的行为挖掘与模式识别任务。; 适合人群:具备一定电力系统基础知识、数据挖掘或智能优化算法背景的科研人员及工程技术人员,尤其适合从事智能电网、负荷特性分析、需求响应、用户行为研究等方向的硕士、博士研究生及高校教师。; 使用场景及目标:①实现居民用户用电行为的有效分类与典型负荷曲线提取;②优化电力客户细分策略,支撑差异化电价、需求响应激励政策的设计与实施;③为负荷预测、电网规划、配电台区管理提供数据驱动的决策依据;④作为高水平学术论(如EI、SCI期刊)的研究基础,用于算法复现、性能对比与创新改进。; 阅读建议:建议读者结合提供的Matlab代码深入理解PSO-FCM算法的具体实现流程,重点关注粒子编码方式、适应度函数构建、聚类有效性评价指标(如轮廓系数、误差平方和)的应用,鼓励在真实用电数据集上进行实验验证,并尝试引入其他优化策略或评估维度以进一步提升模型鲁棒性与实用性。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据件的下载热度、件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解与支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧