1. JDBC執行存儲過程異常慢
1.connection不知道你是採用什麼方式獲取的,如果不是從連接池裡取,你每connection.close()一次,下次get的時候會重新建立實際物理鏈接,這樣會相當耗時。所以你檢查一下是在獲取connection時耗的時間多,還是在execute的時間多。代碼:
long startTime = System.currentTimeMillis();
conn = getConnection(); // execute();
long endTime = System.currentTimeMillis();
System.out.println("獲取鏈接的時間:" + (endTime - startTime));
執行的類似;
2.從你的存儲過程的邏輯來說,要條件查詢,更新某個欄位的值,和入庫,這三個步驟應該有輸入參數的,那麼你的這個參數是怎麼傳入的?
個人覺得你的這個存儲過程可以優化成sql來執行,效率應該會更好:
首先,你把輸入參數放入一個臨時表;
比如結構是:
_id _field
查詢的條件 更新的欄位
// 更新_table中存在的記錄的_field欄位,並且只更新_table與_tmp鍵值相等的記錄
UPDATE _table t SET _field=(SELECT MAX(_field) FROM _tmp WHERE _id=t._id) WHERE EXISTS (SELECT 'X' FROM _tmp WHERE _id=t._id);
// 選擇_table與_tmp鍵值不相等的記錄(即_table中不存在的記錄)插入_table
INSERT INTO _table (_id,_field) (SELECT _id,_field FROM _tmp t WHERE NOT EXISTS (SELECT 'X' FROM _table WHERE _id=t._id));
這樣的話,每次都是兩個批量操作,而且不需要輸入參數,直接調用就可以,唯一需要多做的工作就是做臨時表。
2. java jdbc 執行sql語句批量操作問題
sql優化:
1.name欄位創建索引
2.「table_c.*」 不要用」*「號,可以換成table_c.id,table_c.name,table_c.sex,table_c.email
如果可以的話,你和以在insert into table_a 中間加 append ,這樣寫 insert /*+ append */ into
希望能幫到你!
3. 通過jdbc執行sql比在plsql中慢好多
大哥,plsql是只檢索出前面的20條,即rownum<20 的數據,JDBC是查全部。你把PLSQL的數據全展開,你看看要多少秒!
4. Java每秒執行一次sql影響性能嗎
影響。因為Java每秒執行一次sql速度太慢,所以輕者影響整個系統性能,重者直接導致服務重啟或死機。
5. 用JDBC連接 SQL Server 2012 資料庫查詢速度慢怎麼解決
SQL
Server查詢速度慢的原因有很多,常見的有以下幾種:
1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷)
2、I/O吞吐量小,形成了
瓶頸效應
。
3、沒有創建計算列導致查詢不優化。
4、
內存不足
5、
網路速度
慢
6、查詢出的數據量過大(可以採用多次查詢,其他的方法降低數據量)
7、鎖或者
死鎖
(這也是查詢慢最常見的問題,是程序設計的缺陷)
8、sp_lock,sp_who,活動的用戶查看,原因是讀寫
競爭資源
6. java代碼使用spring的jdbctemplate查詢大數據量時速度特別慢,該如何解決呢
第一,不要用*,第二,建議分頁,因為數據太大,讀到內存里也麻煩
7. java,jdbc,大量數據update更新效率很慢,哪位大神可憐可憐我吧
mysql使用jdbc的批量插入需要在連接Mysql的地方加上rewriteBatchedStatements=true
,也就是spring.datasource.url = jdbc:mysql://192.168.15.44:3306/ml_test?useSSL=false&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true
,如果不加這個的話,和自己循環插入差不多
8. jdbc連接sql資料庫訪問數據超慢,急求幫助
這個應該跟驅動問題不大,只要是專用的驅動效率就應該不是問題。
慢,主要跟資料庫,數據量,SQL相關。
9. JAVA sql語句執行緩慢問題
如果表中的數據量很大 你可以在資料庫 上給表添加索引 是你查詢的欄位添加索引 這樣會快很多。