|
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-05-18
越看越有意思
|
|
| 返回顶楼 | |
|
时间:2008-05-18
vicksong 写道 ddandyy 写道 这种业务在做维护项目的时候经常会遇到的......
式样变更之后 为了最少的修改量 只改SQL 是最方便的 试想一下,用JAVA与数据库结合实现: 一个while的事,何必搞得那么深沉呢? 你是程序员吗? 你说一个sql的能解决为什么要while while能好吗? 优秀的程序员都是都是精益求精的写代码,不像你这样随便用上几句语句就完成了就完事的。 |
|
| 返回顶楼 | |
|
时间:2008-05-18
个人认为,之所以使用数据库就是考虑的大规模复杂操作的性能问题,世界上任何事物存在都是有他道理的。这也就是为什么Hibernate保留了createSQLQuery方法的原因
,人们都说Hibernate性能有问题,解决的主要方法两点:1 使用缓存和优化配置,2 在关键部位使用本地SQL。 SQL:程序员的基本功呀。 |
|
| 返回顶楼 | |
|
时间:2008-05-19
zhouky4665 写道 vicksong 写道 ddandyy 写道 这种业务在做维护项目的时候经常会遇到的......
式样变更之后 为了最少的修改量 只改SQL 是最方便的 试想一下,用JAVA与数据库结合实现: 一个while的事,何必搞得那么深沉呢? 你是程序员吗? 你说一个sql的能解决为什么要while while能好吗? 优秀的程序员都是都是精益求精的写代码,不像你这样随便用上几句语句就完成了就完事的。 Diu,最讨厌这种在技术上死钻牛角尖的人了,说不定一个复杂的SQL要花上一个程序员一天的时间,而配合JAVA的话,十分钟就搞定,对用户使用中也不产生任何的负面影响,说实在话,我宁愿招后者,也不会招象前者那样的所谓的技术高手...... |
|
| 返回顶楼 | |
|
时间:2008-05-21
大家发答案之前都测了嘛?
没测的话,能不能标明一下? |
|
| 返回顶楼 | |
|
时间:2008-05-21
跑了一下,感觉就Oracle 的 Merge 可以搞定。
update a inner join b on a.id=b.id set a.col1=b.col1,a.col2=b.col2 where b.age>40 实现不了“a无b有”数据的写入。 |
|
| 返回顶楼 | |
|
时间:2008-05-21
mysql 用 inner join 比较优化
|
|
| 返回顶楼 | |
|
时间:2008-05-21
aimer311 写道 大概是这样的。
两张表: A:id,age,column1,column2 B:id,age,column1,column2 A.id 与 B.id关联。 将B中age>40的column1,column2更新到A的相应记录中,只能写一个语句。 写出mysql和oracle两个版本。 不知道怎么写。 delete from B where age > 40; 或 delete from A where id in (select id from B where age > 40); 这样能合题意么~` |
|
| 返回顶楼 | |
|
时间:2008-05-24
总结前面的答案,测试了下,在mysql中可以用的就两句:
update a inner join b on a.id=b.id set A.column1 =b.column1,a.column2=b.column2 where b.age>40; update A,B set A.column1 = ( select b.column1 from B where B.id = A.id and B.age > 40 ), A.column2 = ( select b.column2 from B where B.id = A.id and B.age > 40 ) where b.id=a.id and b.age>40; oracle没有环境可以测试 |
|
| 返回顶楼 | |
|
时间:2008-06-12
ORACLE的大数量下,使用UPDATE会很耗费资源,而且要更新时间长,使用merge效率会比较高.
还有说将SQL改为while的那个哥们,我个人觉得其他人不是钻牛角尖,对于特别大的数据量来说,你那一条数据while一次的方法不太可行,慢....而且一次应该不能全部执行所有数据,为了保证缓存不溢出,你可能要多次运行你的程序. 对于开发来说,我也还是入门级别.说的如果不对还请各位大侠批评 |
|
| 返回顶楼 | |








