Database 板


LINE

您好,基於资料库正规化的概念, 我个人不是很建议这样设计资料库, 因为这样每次更新value, 都要将『之後每一天』的result做即时更新, 想一想,如果更新去年的资料,那就要重算之後的365笔资料, 万一改了更新到一半,又有资料被改了,可能就会造成lock, 这样设计的好处是读的时候比即时运算快一些, 但是现在的软硬体环境应该可以忽略掉即时sum跟取定值的计算时间差, 我个人是这样建议,如果时间笔数不多,即时sum起来就好, 如果笔数非常非常多,建议是另外做一个专门快取的table比较乾净,再定时去更新他, 又,因为笔数非常非常多,所以每次更新可能都要花上一段时间去计算更新, 建议定时更新就好,不要放到trigger里面,这样比较不会影响效能~ ※ 引述《sonesnsdsosi (FOREVERSONE)》之铭言: : 你好,我有想到用procedure 的方法 : 首先 我在你的表格建立PK id 方便後续操作 : 语法如下: : create or replace procedure pro01 : is : i number; : j number; : begin : select max(id) into i from yourtable; : select min(id) into j from yourtable; : LOOP : exit when i<j; : update yourtable set results=(select sum(value) from : yourtable where id<i) where id=i; : i:=i-1; : END LOOP; : 建立procedure後 每当你有更新value : 就执行 : execute pro01; : 就会帮你更新 : 但如果你想要完全自动更新,可能就要搭配trigger+procedure了(有尝试这样做, : 但一直失败) : 小弟浅见 : end;※ 引述《lunenknight (BlackMilk)》之铭言: : : 内容/问题描述:SQL语法问题 : : 假设我有一个资料表如下 : : Date Value "Results" : : 05/01/01 300 300 : : 05/01/02 200 500 : : 05/01/03 -100 400 : : 05/01/04 -200 200 : : 05/01/05 500 700 : : . . . : : . . . : : . . . : : 我要如何取results值 永远是自己日期以前的value相加 : : 因为需要可以从中间直接更新value值 例如: 将05/01/03 的value更新为 -200 : : 之後的results值 要依序更新为 300 100 600 : : 请问要如何下手... --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.124.103.36
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1423795743.A.779.html
1F:推 sonesnsdsosi: 是阿没有错,会写这个只是根据那位先生的需求而写的 02/13 11:24
2F:→ sonesnsdsosi: 因为这样会违反正规化,之後维护也会变得很麻烦 02/13 11:25
3F:→ sonesnsdsosi: 就会导致您说的那些问题:) 02/13 11:26
4F:推 sonesnsdsosi: 因此还是建议 另外开一张表 来定期更新 或是建立 02/13 11:36
5F:→ sonesnsdsosi: view 透过计算公式来产生results总和 02/13 11:37
6F:→ sonesnsdsosi: 只是缺点就是要花多些维护的成本在view上 02/13 11:38
7F:推 sonesnsdsosi: 谢谢K大分享经验~ 02/13 11:49
8F:→ kevindump: 不用客气,大家互相求进步嘛~ 02/13 15:59
9F:→ kevindump: 本来作法就会有很多种,各有优缺点,大家交流经验嘛~ 02/13 16:01
10F:→ kevindump: view其实相当於即时运算,只是db有优化过,会快一些! 02/13 16:02
11F:→ kevindump: 但是这个case看来量不大,建议参考下篇直接算就好了~ 02/13 16:08







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP