作者silver8250 ((阿信))
看板java
标题Re: [J2SE]资料库新增几万笔资料
时间Wed Jul 2 21:52:41 2008
请问您的问题有办法用一条解决所有的问题吗??
因为如过要用程式全部来解决的话
那请问您使用 DB 的用意只是要来存放 DATA 与纯粹 query 吗??
因为小弟我之前也有碰过类似的问题,是需要从多个 tables 计算薪资
最後将计算出的结果再写回某个 table
一开始小弟跟您一样,也是用程式暴力解决,後来发现,SQL其实很强大
我就开始去"兜"SQL语法,结果给我"兜"出一条就可以解决的 SQL
该功能就几乎以 0.1 秒以下的时间完成我要的工作
我的意见是,您可以考虑 survey SQL,问题就会很轻松!!
以上是小弟的浅见~~
※ 引述《slalala (WIKI大学生写作业的题材)》之铭言:
: 标题虽然是J2SE
: 不过却是JSP/SERVLET的应用 ( ̄□ ̄|||)a
: 因为如果在jsp显示上会有timeout等等的问题
: 所以有些疑问
: 目前程式流程大概是这样(程式码还没写 大概写一下假码 ,SET不是java.util的Set)
: DO
: SET SQL= SQL Command;
: SET ResultSet = executeQuery(SQL) //从资料库取资料
: WHILE( ResultSet.next() ) //大概两万多笔
: BEGIN
: SET DATA = ResultSet.getData() //从资料库取得资料
: DATA = DoSomeThing( DATA) //处理资料
: Statement.Insert(DATA ) //新增到资料库其他栏位
: END
: END
: 以上这样的程式 我估计 大概要跑个几分钟
: 之前的经验是用批次的方式结果会好很多
: 就假码WHILE结束之後才执行statment.executeBatch()
: 现在的疑问就是:
: 要是一次两万多笔 这些资料在executeBatch之前
: 都暂存在记忆体吧
: 这样要是资料量很大的时候 不就可能有爆炸的问题?!
: 我现在的想法是
: 在ResulteSet的回圈内计数
: 当到达特定的mod值(ex:100、1000)
: 就执行executeBatch()与clearBatch()
: 不知道这样的想法对不对?!
: 还是有更好的作法??
: 另外timeout的问题
: 我是想实作官方网站有教的JProgressBar
: 或者是乾脆写成Thread
: 将页面显示跟SQL执行批次的程序分开
: 不知道这样可行吗?
: (只担心有Thread-safe的问题 我JAVA很多观念很粗浅ˋ(′_‵||)ˊ)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.146.166
※ 编辑: silver8250 来自: 118.161.146.166 (07/02 21:53)
1F:推 slalala: 如果是薪资计算就简单多了~_~ 因为里面包含很多逻辑判断 07/03 00:43
2F:→ slalala:至乎不是数学式可以的处理 不过我还蛮好奇 纯SQL原PO用了 07/03 00:45
3F:→ slalala:哪些特殊的语法? 还是使用SP之类的? 07/03 00:46
4F:推 TonyQ:资料库也是有if 之类的判断式可以用 也可以用预储程序之类 07/03 00:57
5F:推 slalala:就是SP罗(Stored Procedure) 07/03 01:00
6F:推 TonyQ:还是有一些function 可以用啦...不见得只有sp 07/03 01:01
7F:推 slalala:实在跟MYSQL 不熟 要翻翻文件了ORZ 07/03 01:04
8F:→ silver8250:我是用 M$SQL2K 语法方面,就旋转一下tables 07/03 09:58
9F:→ silver8250:顶多+,-,SUM计算跟CASE判断罗!!对我来说就够用了~~ 07/03 10:00
10F:推 Lordaeron:SQL2K比哪个号称很快的, 和哪个当年跟SQL2K同个老爸的 07/03 11:21
11F:→ Lordaeron:好太多了. 07/03 11:22
12F:→ Lordaeron:哪个号称很快的, 还会有莫明的key duplicate但照insert 07/03 11:24
13F:→ silver8250:楼上的是说?? 小弟不才,请楼上大大指点~~ 07/03 20:13
14F:推 Lordaeron:简单的讲,就是没必要,请换postgresql 07/03 20:58
15F:推 Lordaeron:不要用哪个会key duplicate但照insert的. 07/03 21:33
16F:推 slalala:原来只有一些运算子 不过之前听某教授说MSQL的运算子效能 07/03 21:58
17F:→ silver8250:可惜,老板不是我~~ 07/03 21:58
18F:→ slalala:没有比较好 除非一行解决 不然不建议给SQL运算(SP另当别论 07/03 22:00
19F:→ Lordaeron:我的SQL有必要的,都写个两三百KB的,一行?不加换行是一行 07/03 22:09
20F:→ Lordaeron:没错,但我无法读一行512bytes的sql. 07/03 22:11
21F:→ Lordaeron:要写复杂的sql, 还是用PostgreSQL吧. 07/03 22:13
22F:→ slalala:不是不喜欢听人家推荐 如原PO说的 我不是老板不能决定什麽 07/03 22:53
23F:→ silver8250:我都尽量用一句SQL就做完,L大的意见不错,只是离题了~ 07/03 23:07