楼主: lfree

[原创] 我看手术麻醉系统

[复制链接]
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
11#
 楼主| 发表于 2011-5-12 10:00 | 只看该作者

9.滥用外部连接(+):

9.滥用外部连接(+):
这个是我看到使用外部连接最多的程序,我不想说明什么,也许是编程的需要,我不好评论!
我举一个例子:



toad对于外部连接的sql语句在写成( + )的情况下(有空格的情况下),格式化有BUG,以上看不全sql语句。我格式化如下:
SELECT COUNT (*)
  FROM med_operation_master a, med_anesthesia_summary b
WHERE a.patient_id = b.patient_id(+)
   AND a.visit_id = b.visit_id(+)
   AND a.oper_id = b.oper_id(+)
   AND b.patient_id IS NULL
   AND oper_status > 2
   AND a.anesthesia_doctor = :1
   AND start_date_time > SYSDATE - 31


我第一次看的时候,感觉很奇怪,med_anesthesia_summary的主键中有patient_id,为什么要查询b.patient_id IS NULL
这样的条件出现,再细看才知道使用了外部连接。另外我前面一直没说一个问题,像oper_status,start_date_time的字段,前面没有a.,
b.的前缀,对于我开始不熟悉数据库,根本不知道这个字段是来自那个表,这个有一个适应的过程,不知道以后接手的程序员估计也会花一定的时间。

这个语句更好的写法应该这样。
SELECT COUNT (*)
  FROM med_operation_master a
WHERE a.oper_status > 2
   AND a.anesthesia_doctor = :1
   AND a.start_date_time > SYSDATE - 31
   AND NOT EXISTS (
          SELECT NULL
            FROM med_anesthesia_summary b
           WHERE b.patient_id = a.patient_id
             AND b.visit_id = a.visit_id
AND b.oper_id = a.oper_id);
另外我查询v$sql_bind_capture视图,发现:1参数都是汉字。

而我查询表med_operation_master 字段anesthesia_doctor里面全是代码,仅仅有一个是汉字,我仅仅估计程序有BUG。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
12#
 楼主| 发表于 2011-5-12 10:01 | 只看该作者
10再来看看awr报表,实际上这个系统对于dba讲,是一个小系统,看awr报表根本看不到问题,开发商应该感谢现在的硬件设备,掩盖了许多程序设计的缺陷。


2个小时snap,db time仅仅0.77分钟,我的估计即使存在上面的问题不去管,使用5-6年也不会有问题。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
13#
 楼主| 发表于 2011-5-12 10:04 | 只看该作者
总结:
我优化N多项目,我真的没看到几个做医院开发做的非常好,我看到更多的是垃圾!当然从电话反馈看,系统运行应用中的问题不是很多,运行还是很稳定的,我自己更多的关注是数据库的优化。

这样的系统不优化,表的增长速度不是很快,运行5-6年,不看底层,根本看不到问题。

像MED_OPERATION_SCHEDULE表,目前不到1M,运行5-6年最多10M。
天天全表扫描,也不会很慢。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
14#
 楼主| 发表于 2011-5-12 10:28 | 只看该作者
补充:

7.语句很长,我格式化:
中的条件:

  AND (       scheduled_date_time >= TRUNC (SYSDATE, 'dd') - -1
                        AND scheduled_date_time < TRUNC (SYSDATE, 'dd') - -1
                                                  + 1
                     OR scheduled_date_time IS NULL
                    )

为什么要放在内层?这个字段是表MED_OPERATION_SCHEDULE中的字段。

使用道具 举报

回复
论坛徽章:
28
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442014年新春福章
日期:2014-02-23 23:08:492014年世界杯参赛球队: 葡萄牙
日期:2014-08-05 11:31:14马上有对象
日期:2014-11-21 22:36:46暖羊羊
日期:2015-03-04 14:50:372015年新春福章
日期:2015-03-06 11:57:31秀才
日期:2016-03-24 09:10:24秀才
日期:2016-03-24 09:20:52秀才
日期:2016-04-21 14:08:53秀才
日期:2016-06-23 14:15:06
15#
发表于 2011-5-12 20:15 | 只看该作者
太强悍了。。佩服

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2011-5-13 11:34 | 只看该作者
太强了。佩服

使用道具 举报

回复
论坛徽章:
3
行业板块每日发贴之星
日期:2009-02-06 01:01:10ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2011-5-14 00:44 | 只看该作者
dba中的dba,恐怖分子中的拉灯。。。。。。。。。。

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
18#
 楼主| 发表于 2011-5-16 11:41 | 只看该作者
我自己倒很想看看别人现在的系统,特别是使用2-3年以后的。

使用道具 举报

回复
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:07:272011新春纪念徽章
日期:2011-02-18 11:42:50ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11
19#
发表于 2011-5-16 12:25 | 只看该作者
对于没有麻醉记录的手术记录,也可以出来。所以使用了外连接.有5年数据的。响应也还可以。当然感谢oracle和现在的硬件

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
20#
 楼主| 发表于 2011-5-16 14:59 | 只看该作者
你看过里面的执行计划吗?
我很想了解
7.语句很长,我格式化:

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表