请教一个存储过程的优化,一运行这个数据库就占用98%,我想是instr占用内存太多的原因,不知道怎么优化

aysun168 2006-06-01 11:11:04
create or replace procedure TYPE_UPDATESTATE_temp
(
TYPE_TABLE_NAME VARCHAR, --表名
TYPE_ID varchar, --id连起的字符串,例(12,13,14)
Type_State number --状态值
)
is
begin

if TYPE_TABLE_NAME = 'article' then
update t_article set a_state=Type_State where instr(','||TYPE_ID||',',','||a_id||',')>0 ;
update t_article_index set ai_state=Type_State where ai_type=0 and instr(','||TYPE_ID||',',','||ai_src||',')>0;
if Type_state =5 then
update t_topic set t_list=t_list-1 where t_id in (select a_topic from t_article where a_topic>0 and instr(','||TYPE_ID||',',','||a_id||',')>0 ;
--update t_user set u_article=u_article-1 where u_id in (select a_user from a_article where a_topic>0 and instr(','||TYPE_ID||',',','||a_id||',')>0 ;
end if;
end if;
end TYPE_UPDATESTATE_temp;
数据量t_article现在30W以上,t_article_index40W以上
a_topic现在10W,t_user现在100W以上

...全文
243 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kill8108 2006-08-07
  • 打赏
  • 举报
回复
我对oracle不是很熟,instr若在你那大的字符串中速度真的会很慢的了,应该去优化下吧!
BITLJ 2006-08-07
  • 打赏
  • 举报
回复
表里有没有主键啊
另外对查询字段使用函数会降低效率
mu_gua 2006-08-07
  • 打赏
  • 举报
回复
sozdream() 说的是with查询吧,不知道with能否用于update中
mu_gua 2006-08-07
  • 打赏
  • 举报
回复
instr(','||TYPE_ID||',',','||a_id||',')
显然在子串和源串前后都加','是多余且降低效率的
instr(TYPE_ID,a_id)中包含参数,是一个可变函数,因此不能建立函数索引。
在这么大规模的表上作update,无法使用索引只能全表扫描了。
如果硬件不是足够的强大只能修改设计了
龙翔飞雪 2006-08-07
  • 打赏
  • 举报
回复
你程序里经常用到instr(','||TYPE_ID||',',','||a_id||',')>0

那你就声明一个 integer变量, 比如叫 isCorrect;

然后sql里全用isCorrect>0
aysun168 2006-06-01
  • 打赏
  • 举报
回复
没有顶吗?
内容概要:本文档针对2026年华为杯研究生数学建模竞赛C题“服务于脑机接口与精神性疾病诊断的脑电图计算模型”,系统性地提供了从解题思路、算法实现到论文撰写的全流程支持资源。内容聚焦脑电信号(EEG)的数据预处理、特征提取、分类建模与结果分析,融合机器学习与深度学习技术(如SVM、CNN、LSTM、Transformer等),构建高精度的脑电识别模型,服务于抑郁症、癫痫等精神疾病的智能辅助诊断及脑机接口的信息解析。文档还整合了MATLAB与Python代码资源、模型实现案例及多领域科研技术支持体系,涵盖智能优化、信号处理、路径规划、通信优化等方向,并提供网盘资料下载与在线目录导航,强化理论与实践的深度融合; 适合人群:参加全国研究生数学建模竞赛的硕士、博士研究生,从事脑电信号处理、智能医学、生物信息学研究的科研人员,以及具备一定编程与数据分析基础、致力于人工智能在医疗健康领域应用的高校学生与青年学者; 使用场景及目标:① 快速掌握华为杯C题的技术路线与建模范式,高效完成竞赛备赛;② 构建面向临床辅助诊断的脑电计算模型,推动脑机接口与精神疾病识别的算法创新;③ 借助提供的开源代码与建模框架,开展科研复现、算法优化与学术论文写作; 阅读建议:建议结合文档提供的在线资源目录与百度网盘资料系统学习,优先精读脑电信号去噪、特征工程构建与深度学习模型选型部分,动手运行并调试代码,通过对比不同模型性能深化对算法适用性与工程实现细节的理解,同时关注跨学科方法的融合应用。

17,133

社区成员

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

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