我正在尝试优化一个查询,该查询查看一个大表(3700 万行),并有一个关于在查询中执行操作的顺序的问题。
select 1
from workdays day
where day.date_day >= '2014-10-01'
and day.date_day <= '2015-09-30'
and day.offer_id in (
select offer.offer_day
from offer
inner join province on offer.id_province = province.id_province
inner join center cr on cr.id_cr = province.id_cr
where upper(offer.code_status) <> 'A'
and province.id_region in ('10' ,'15' ,'21' ,'26' ,'31' , ...,'557')
and province.id_cr in ('9' ,'14' ,'20' ,'25' ,'30' ,'35' ,'37')
)
Run Code Online (Sandbox Code Playgroud)
WHERE日期范围的子句是否在子查询之前执行?将最严格的子句放在首位以避免其他子句的大循环,以便更快地执行是否是一种好方法?
现在查询需要很多时间来执行。
我想删除一个在AIX 6.0 OS中创建的oracle实例(oracle 10.2.0.4.0)。我知道我可以删除终端中的所有 dbf 和 ctl 文件,但我认为这不是最好的方法。我认为必须是一种更清洁的方式来做到这一点。
提前致谢。
我的问题看起来很简单,但我还没有找到解决方案。我在插入 SQL 脚本中使用 nexval 序列,但出现错误,因为 LAST_NUMBER 值尚未更新,并且其值与 tabla 数据不正确。例如,对于本例,该值为 5,表有 62 行。
我在谷歌上搜索过,但没有找到命令或更改序列的 LAST_NUMBER 参数的方法。
ALTER SEQUENCE rs2qnes0 START WITH 62;
Run Code Online (Sandbox Code Playgroud)
或ALTER SEQUENCE rs2qnes0 LAST_NUMBER 62;不工作
我在创建 Oracle 10.2.0.4 实例和从其他环境导入转储时遇到问题。我在 AIX 下使用 Oracle。
我使用了 ksh 脚本,除了创建用户外,一切正常。
之后我创建了默认用户,用于连接到数据库和其他工作模块。尝试导入转储时出现问题。
export ORACLE_SID=HISTO;
sqlplus / as sysdba
CREATE USER ANC IDENTIFIED BY "xxxxxxx";
grant connect, create session, imp_full_database to ANC;
commit;
Run Code Online (Sandbox Code Playgroud)
尝试导入 de dump 时的错误如下。
用于加载转储的命令:nohup impdp ANC/xxxxxx DIRECTORY=MIG11G DUMPFILE=dump_histo.expdp LOGFILE=impdp_29102013.log schemas=HISTO &
nohup.out 文件的输出:
Import: Release 10.2.0.4.0 - 64bit Production on Lundi, 23 Décembre, 2013 18:51:22
Copyright (c) 2003, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With …Run Code Online (Sandbox Code Playgroud) oracle-10g ×2
delete ×1
impdp ×1
instance ×1
oracle ×1
performance ×1
postgresql ×1
sequence ×1
users ×1