java和数据库在我的理解中是处理数据的两个层级
java处理业务逻辑,一些数据在java中处理是很耗内存的,jvm很容易溢出,比如插入上万条数据,for循环处理,批量插入,虽然sql是一条,但是for循环次数太多,jvm就撑不住了,(for最好处理千以下的)
for循环的操作完全可以在数据库中执行,相比java中处理是极快速的
比如:
插入海量数据的sql示例
INSERT INTO VAT_STOC_INVOICE (FPH, INVOICE_CATAGORY, INVOICE_CODE, INVOICE_NO, PURCHASE_ID, SALESUNIT_CODE,DEPOT_ID, POINT_ID, F_STATE, UPDATE_TIME)SELECT #{invoiceCode } || lpad( to_number(#{invoiceNo}) + n - 1, 8, '0' ),
#{invoiceCatagory},#{invoiceCode},lpad( to_number(#{invoiceNo}) + n - 1, 8, '0' ),
#{purchaseId,jdbcType=NUMERIC},#{salesunitCode},#{depotId},#{pointId,jdbcType=NUMERIC},、
#{fState},SYSDATEFROM (select rownum n from dual connect by rownum <= #{longValue,jdbcType=NUMERIC})
最关键的就是最后一句,longvalue是传入的数据量,测试过10万条数据sql也仅需4s,