大侠们,快来救救小弟吧!

概念人 2012-10-22 11:46:47
以前运行速度还挺好的,这次把试图改了一下,性能就出现问题了,硬是不知道该怎么处理了,待我细细道来。

oracle 9i数据库有试图 v 和表 t

情况如下:

直接查表:

select id from t where id<5;
这样查起来很快。返回结果为:1,2,3,4

接下来查试图:

select * from v where tid in(1,2,3,4);
这样查起来很快。

但是换成下面查询就很慢很慢了。
select * from v where tid in(select id from t where id<5);

一直不解为什么会这样,哪位帮忙解决下,小弟不胜感激。
...全文
229 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2012-10-25
  • 打赏
  • 举报
回复


t表数据量比较大吧,注定很慢,

select id from t where id<5 你得到的ID记录数有多少? 和in (1,2,3,4)比较看看就知道了
概念人 2012-10-25
  • 打赏
  • 举报
回复
我这边问题是解决了,导致速度慢的原因是视图V嵌套了另外一张视图,但是为什么嵌套视图就会变的这么慢,我还真不清楚。

两张视图的关系类似下面:
create view v_a
as
select t.a,t.b,t.c from t_a t;

create view v_b
as
select a.*,(select tc from t_c where ta=a.a) tc from v_a a;

结果查
select * from v_b where a in(select a from t_a where a in(1,2,3,4));这样就很慢

select * from v_b where a in(1,2,3,4);这样很快

select * from v_a where a in(select a from t_a where a in(1,2,3,4));这样也很快。

还不知道为什么会这样。
概念人 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

你试试这个:
select * from v where tid in(select /*+no_unnest*/ id from t where id<5);
[/Quote]

创建视图的时候,视图里面已经写了一些SQL调优策略。
概念人 2012-10-22
  • 打赏
  • 举报
回复
我再补充下我的问题,原始的SQL脚本是子查询里面依然有一个in查询:如下

select * from v where tid in(select id from t where b in(1));
select id from t where b in(1);返回结果为:1,2,3,4

我试过以下几种查询方式:
select * from v where tid in(select id from t where b in(1));

select * from v where tid in(select id from t where b=1);

select * from v where exists (select 'X' from t where b in(1) and b.id=a.tid);

select * from v where exists (select 'X' from t where b=1 and b.id=a.tid);

这四种查询结果是一样的,很慢很慢。
概念人 2012-10-22
  • 打赏
  • 举报
回复
这样我试过,还是一样很慢很慢。
人生无悔 2012-10-22
  • 打赏
  • 举报
回复

--v,t表都建立索引,應不會很慢的
select * from v where exists(select 1 from t where t.id=v.tid and t.id<5);
zp4838482 2012-10-22
  • 打赏
  • 举报
回复
SELECT * FROM v WHERE TID in (SELECT ID FROM T WHERE ROWNUM<5 ORDER BY ID ASC)
book523 2012-10-22
  • 打赏
  • 举报
回复
V、t两个表分析一下就ok了。
reg13141 2012-10-22
  • 打赏
  • 举报
回复
你试试这个:
select * from v where tid in(select /*+no_unnest*/ id from t where id<5);
内容概要:本文提出了一种基于高保真电磁暂态仿真的智能电网虚假数据注入攻击(FDIA)数据集构建与影响分析方法,通过PSCAD与MATLAB联合仿真平台,在IEEE标准测试系统(如9节点或39节点系统)上建立精确的电力系统电磁暂态模型,全面模拟系统在正常运行与遭受FDIA攻击下的动态响应过程。该方法能够生成包含电压、电流、功率、频率等多维度电气量的高精度、时间同步的仿真数据集,真实反映攻击对系统暂态稳定性、潮流分布、电压波动及频率响应的影响,尤其适用于构网型/跟网型逆变器、储能系统、分布式能源高比例接入等新型电力系统场景的安全性评估。所构建的数据集具有高真实性、可复现性和强扩展性,为FDIA攻击机理研究、隐蔽性分析、传播路径追踪以及攻击检测算法(如基于机器学习的异常检测模型)的训练与验证提供了坚实的数据基础和技术支撑。; 适合人群:电力系统自动化、智能电网安全、能源互联网等领域的高校研究生、科研人员及工程技术人员,要求具备扎实的电力系统分析理论基础,熟悉PSCAD/EMTDC与MATLAB/Simulink仿真工具的基本操作,了解状态估计、SCADA系统及网络安全基本概念; 使用场景及目标:① 构建高保真的电力系统网络攻击仿真环境,复现FDIA攻击场景;② 生成用于训练、测试和验证FDIA检测模型的标准化高质量数据集;③ 深入分析虚假数据注入对电力系统暂态稳定性和动态行为的影响机理;④ 支持新型电力系统背景下智能电网安全防护技术、韧性提升策略的研究与实验验证; 阅读建议:建议结合文中所述的联合仿真流程,动手搭建PSCAD电磁暂态模型并实现与MATLAB的数据交互,重点关注攻击向量的设计、量测量篡改策略、系统响应特征提取等关键步骤,同时参考提供的资源链接获取完整代码与案例实现,以深化对攻击建模与防御机制的理解。
内容概要:本文聚焦于“基于欠谐振工作区间的全桥LLC变换器混合控制仿真建模与动态性能分析”,依托Simulink平台构建详细的电力电子系统仿真模型,复现相关高水平学术论文的核心研究成果。深入研究全桥LLC谐振变换器在欠谐振区间内的运行机理,结合变频与混合控制策略实现对输出电压和电流的精确调控,重点分析其在不同负载与输入电压条件下的动态响应特性与稳定性表现。文中系统阐述了控制环路设计、谐振参数匹配及仿真建模的关键步骤,强调控制策略优化对提升变换器效率、实现软开关和增强系统鲁棒性的重要作用,为电力电子变换器的高性能控制提供了理论依据与实践范例。; 适合人群:具备电力电子技术基础和Simulink仿真能力,从事电源设计、新能源变换系统研发或相关方向的研究生及中级工程技术人员(工作年限1-5年);尤其适用于开展论文复现、课题研究或产品开发的专业人员。; 使用场景及目标:①深入理解全桥LLC变换器在欠谐振区间的非线性工作特性与建模方法;②掌握混合控制策略在Simulink中的实现流程,提升对动态性能的仿真分析与优化能力;③为科研论文复现、课程项目设计或工业级电源控制系统开发提供可复用的技术参考与仿真模板。; 阅读建议:建议结合Simulink环境动手搭建模型,对照文档逐步实现控制策略,重点关注频率调节机制、反馈环路参数整定及仿真结果的物理意义解读;可与其他LLC控制方案(如移相控制、变频调压)进行对比研究,深化对最优工作区与系统稳定性的理解。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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