执行计划输出:SELECT STATEMENT, GOAL = CHOOSE 12 1 189
SORT ORDER BY 12 1 189
NESTED LOOPS 9 1 189
NESTED LOOPS 9 1 185
HASH JOIN SEMI 8 1 32
TABLE ACCESS FULL NEWDOC T_INHOSPITAL_ACTION 2 218 4142
VIEW SYS VW_NSO_1 5 274 3562
SORT GROUP BY 5 274 4658
TABLE ACCESS FULL NEWDOC T_INHOSPITAL_ACTION 2 274 4658
TABLE ACCESS BY INDEX ROWID NEWDOC T_IN_PATIENT 1 1 153
INDEX UNIQUE SCAN NEWDOC PK_T_IN_PATIENT 58
INDEX UNIQUE SCAN NEWDOC PK_T_SICKBEDINFO 750 3000
以下是sql部分
select
a.id,a.patient_name,a.gender_code,a.birthday,a.pid,a.age,a.sick_doctor_id, a.sick_doctor_name,a.sick_area_id,a.sick_area_name,a.section_id, a.section_name,a.in_time,a.state,a.sick_bed_id,a.sick_bed_no,a.age_unit, a.Sick_Degree,
a.NURSE_LEVEL,a.insection_id,a.insection_name,a.in_area_id, a.in_area_name,a.Die_flag,a.Sick_Group_Id,Marriage_State,Medicare_NO,Home_Address, Homepostal_Code,Home_Phone,Office,Office_Address,Office_Phone,Career,Relation_Name,Relation,
Relation_Address, Relation_Phone,RelationPOS_Code,OfficePOS_Code,InHospital_Count,Birth_Place,Folk_Code, CERT_ID,Pay_Manner,IN_Circs,native_place,a.card_id,a.patient_Id
from t_in_patient a
inner join t_inhospital_action b
on a.id=b.patient_Id
inner join t_sickbedinfo c
on a.sick_bed_id=c.bed_id
where a.section_id=5251 and b.action_state=4 and
b.id in (select max(id) from t_inhospital_action group by patient_Id)
order by cast(sick_bed_id as number)
2个关联的表有索引了。查询数据只有13行,速度比较慢。
SORT ORDER BY 12 1 189
NESTED LOOPS 9 1 189
NESTED LOOPS 9 1 185
HASH JOIN SEMI 8 1 32
TABLE ACCESS FULL NEWDOC T_INHOSPITAL_ACTION 2 218 4142
VIEW SYS VW_NSO_1 5 274 3562
SORT GROUP BY 5 274 4658
TABLE ACCESS FULL NEWDOC T_INHOSPITAL_ACTION 2 274 4658
TABLE ACCESS BY INDEX ROWID NEWDOC T_IN_PATIENT 1 1 153
INDEX UNIQUE SCAN NEWDOC PK_T_IN_PATIENT 58
INDEX UNIQUE SCAN NEWDOC PK_T_SICKBEDINFO 750 3000
以下是sql部分
select
a.id,a.patient_name,a.gender_code,a.birthday,a.pid,a.age,a.sick_doctor_id, a.sick_doctor_name,a.sick_area_id,a.sick_area_name,a.section_id, a.section_name,a.in_time,a.state,a.sick_bed_id,a.sick_bed_no,a.age_unit, a.Sick_Degree,
a.NURSE_LEVEL,a.insection_id,a.insection_name,a.in_area_id, a.in_area_name,a.Die_flag,a.Sick_Group_Id,Marriage_State,Medicare_NO,Home_Address, Homepostal_Code,Home_Phone,Office,Office_Address,Office_Phone,Career,Relation_Name,Relation,
Relation_Address, Relation_Phone,RelationPOS_Code,OfficePOS_Code,InHospital_Count,Birth_Place,Folk_Code, CERT_ID,Pay_Manner,IN_Circs,native_place,a.card_id,a.patient_Id
from t_in_patient a
inner join t_inhospital_action b
on a.id=b.patient_Id
inner join t_sickbedinfo c
on a.sick_bed_id=c.bed_id
where a.section_id=5251 and b.action_state=4 and
b.id in (select max(id) from t_inhospital_action group by patient_Id)
order by cast(sick_bed_id as number)
2个关联的表有索引了。查询数据只有13行,速度比较慢。
解决方案 »
- 如何获取分组后按照某一个字段倒序的第一个值?这个sql怎么写啊
- oracle性能的一些问题,在非常单纯的情况下,会比mysql快多少
- 打开带BLOB类型的字段出错,请高手帮帮忙,急
- 求sql文。。我真想不出解决方法了。。。急~~~
- 讨教表格的存储方法.
- oracle 数据恢复问题
- 如何写一个bat文件启动Oracleora92TNSListener和OracleServiceORA9I !
- 高手帮忙~同样是8.1.7版,“燨”字在有些数据库中可以正确显示,有些数据库中却显示乱码,这是怎么一回事???
- 如何以脚本形式导入数据库
- 请救一个SQL语句的写法
- Oracle 列值转行的统计sql 急啊。。。。。
- ORACLE执行计划(求高手)
1.oracle的处理规则,他是从后面到前面的。所以同一个语句能尽量使数据量变小的条件要放后面,大表放前面。
2.建议你分步处理,使用临时表。