成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談使用JDBC Update時(shí)不能使用索引的原因

開(kāi)發(fā) 后端
我在調(diào)試一個(gè)程序時(shí),遇到一個(gè)令我困惑的問(wèn)題:在一個(gè)表上進(jìn)行update時(shí),沒(méi)有使用到表的索引。這里結(jié)合這個(gè)問(wèn)題,談?wù)勈褂肑DBC Update時(shí)不能使用索引的原因。

表DYN_DAYAHEAD_BID按時(shí)間data_time分區(qū),有5個(gè)分區(qū),建立了一個(gè)本地分區(qū)索引index ind_dyn_daybid_store,索引列是data_time, tag_phy, tag_app,version四個(gè)字段。

一直以來(lái),覺(jué)得JDBC Update修改數(shù)據(jù)時(shí)特別慢(根據(jù)業(yè)務(wù)邏輯,往往是一次update 481條記錄)。今天trace了應(yīng)用程序的執(zhí)行計(jì)劃(應(yīng)用程序通過(guò)jdbc訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)版本為oracle 9.2.0.1)。通過(guò)jdbc的執(zhí)行計(jì)劃(trace文件)如下:

  1. select Data_Time,Tag_Phy,Tag_App,Value_0,Value_1,Value_2,Value_3,Value_4,  
  2.   Value_5,Value_6,Value_7,Value_8,Value_9,Version   
  3. from  
  4. DYN_DAYAHEAD_BID where Tag_Phy = :1 and version = :2 and Data_Time > :3 and   
  5.   Data_Time <= :4+1 and Tag_App in ('5TMS01DBS07','5TMS01DBS08','5TMS01DBS09',  
  6.   '5TMS01DBS10','5TMS01DBS11','5TMS01DBS12')  
  7.  
  8.  
  9. call     count       cpu    elapsed       disk      query    current        rows  
  10. ------- ------  -------- ---------- ---------- ---------- ----------  ----------  
  11. Parse        1      0.00       0.00          0          0          0           0  
  12. Execute      1      0.00       0.00          0          0          0           0  
  13. Fetch       49      0.04       0.02          0        609          0         481  
  14. ------- ------  -------- ---------- ---------- ---------- ----------  ----------  
  15. total       51      0.04       0.02          0        609          0         481  
  16.  
  17. Misses in library cache during parse: 1  
  18. Optimizer goal: CHOOSE  
  19. Parsing user id: 62    
  20.  
  21. Rows     Row Source Operation  
  22. -------  ---------------------------------------------------  
  23.     481  PARTITION RANGE ITERATOR PARTITION: 1 KEY   
  24.     481   TABLE ACCESS BY LOCAL INDEX ROWID DYN_DAYAHEAD_BID PARTITION: 1 KEY   
  25.     481    INDEX RANGE SCAN IND_DYN_DAYBID_STORE PARTITION: 1 KEY (object id 30391)  
  26.  
  27. ....  
  28. update DYN_DAYAHEAD_BID set Value_0 = :1 , Value_1 = :2 , Value_2 = :3 ,   
  29.   Value_3 = :4 , Value_4 = :5 , Value_5 = :6 , Value_6 = :7 , Value_7 = :8 ,   
  30.   Value_8 = :9 , Value_9 = :10   
  31. where  
  32. Data_Time= :11 and Tag_Phy= :12 and Tag_App= :13 and Version= :14  
  33.  
  34.  
  35. call     count       cpu    elapsed       disk      query    current        rows  
  36. ------- ------  -------- ---------- ---------- ---------- ----------  ----------  
  37. Parse      481      0.02       0.03          0          0          0           0  
  38. Execute    481     12.85      13.23        346     277537        500         481  
  39. Fetch        0      0.00       0.00          0          0          0           0  
  40. ------- ------  -------- ---------- ---------- ---------- ----------  ----------  
  41. total      962     12.87      13.26        346     277537        500         481  
  42.  
  43. Misses in library cache during parse: 1  
  44. Optimizer goal: CHOOSE  
  45. Parsing user id: 62    
  46.  
  47. Rows     Row Source Operation  
  48. -------  ---------------------------------------------------  
  49.       0  UPDATE    
  50.       1   PARTITION RANGE ALL PARTITION: 1 5   
  51.       1    TABLE ACCESS FULL DYN_DAYAHEAD_BID PARTITION: 1 5  

顯然,查詢時(shí)是JDBC Update用到了索引,而修改時(shí)JDBC Update沒(méi)有使用索引,但我在sqlplus下執(zhí)行類似的語(yǔ)句,則明顯的使用了索引:

  1. SQL> update DYN_DAYAHEAD_BID set value_0=111 
  2.      where data_time=to_date('2006-04-14 0:15:00','yyyy-mm-dd hh24:mi:ss')  
  3.      and tag_phy='303101120211' and tag_app='5TMS01DBS07' and version=1 
  4. SQL> / 

JDBC Update已更新 1 行。

  1. Execution Plan  
  2. ----------------------------------------------------------  
  3.    0      UPDATE STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=51)  
  4.    1    0   UPDATE OF 'DYN_DAYAHEAD_BID'  
  5.    2    1     INDEX (UNIQUE SCAN) OF 'IND_DYN_DAYBID_STORE' (UNIQUE) (  
  6.           Cost=1 Card=1 Bytes=51

然后,我對(duì)程序中的sql語(yǔ)句增加了hint,強(qiáng)制使用索引,然后程序的執(zhí)行計(jì)劃如下:

  1. update  /*+ INDEX(dyn_dayahead_bid ind_dyn_daybid_store) */ DYN_DAYAHEAD_BID   
  2.   set Value_0 = :1 , Value_1 = :2 , Value_2 = :3 , Value_3 = :4 , Value_4 =   
  3.   :5 , Value_5 = :6 , Value_6 = :7 , Value_7 = :8 , Value_8 = :9 , Value_9 =   
  4.   :10   
  5. where  
  6. Data_Time= :11 and Tag_Phy= :12 and Tag_App= :13 and Version= :14  
  7.  
  8.  
  9. call     count       cpu    elapsed       disk      query    current        rows  
  10. ------- ------  -------- ---------- ---------- ---------- ----------  ----------  
  11. Parse      481      0.04       0.02          0          0          0           0  
  12. Execute    481     11.37      11.48          0     247234        502         481  
  13. Fetch        0      0.00       0.00          0          0          0           0  
  14. ------- ------  -------- ---------- ---------- ---------- ----------  ----------  
  15. total      962     11.41      11.50          0     247234        502         481  
  16.  
  17. Misses in library cache during parse: 0  
  18. Optimizer goal: CHOOSE  
  19. Parsing user id: 62    
  20.  
  21. Rows     Row Source Operation  
  22. -------  ---------------------------------------------------  
  23.       0  UPDATE    
  24.       1   PARTITION RANGE ALL PARTITION: 1 5   
  25.       1    INDEX FULL SCAN IND_DYN_DAYBID_STORE PARTITION: 1 5 (object id 30391) 

現(xiàn)在看起來(lái)是JDBC Update使用了索引,但好像對(duì)索引進(jìn)行全表掃描,跟查詢和在sqlplus下使用范圍掃描不一樣。

由于現(xiàn)在表中的數(shù)據(jù)比較少,就已經(jīng)很慢了,以后更加不可能接受,請(qǐng)教各位,為什么在程序中沒(méi)有正確的使用索引,有什么解決的方法嗎?

謝謝大家!

【編輯推薦】

  1. 使用JDBC的五個(gè)精華功能
  2. Tomcat5+MySQL JDBC連接池配置
  3. 在Weblogic中實(shí)現(xiàn)JDBC的功能
  4. 詳解JDBC與Hibernate區(qū)別
  5. JDBC連接MySQL數(shù)據(jù)庫(kù)關(guān)鍵四步
  6. 詳解JDBC驅(qū)動(dòng)的四種類型
責(zé)任編輯:彭凡 來(lái)源: ITPUB
相關(guān)推薦

2011-08-15 21:42:57

Oracle數(shù)據(jù)庫(kù)不能使用索引

2009-07-15 18:07:47

JDBC代碼

2009-07-16 14:46:48

jdbc statem

2009-07-15 17:52:23

sqlite jdbc

2009-07-22 13:32:24

JDBC SQL

2009-09-21 13:05:18

Hibernate u

2009-07-17 10:58:12

SwingWorker

2022-07-12 10:12:37

面試箭頭函數(shù)前端

2010-05-31 12:55:49

MySQL索引

2009-07-15 15:47:12

JDBC DAO

2009-06-08 17:59:00

HibernateTemplate

2011-08-02 13:08:06

Oracle索引

2010-02-02 16:52:42

Linux chrom

2020-11-20 15:04:17

芯片手機(jī)電腦

2009-06-29 17:17:57

Spring

2009-07-15 17:11:31

JDBC的概念

2009-09-10 15:45:07

Linq使用Selec

2009-09-28 13:43:28

使用Hibernate

2011-05-26 09:20:59

配線架

2013-12-26 16:55:56

manman命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 色五月激情五月 | 国产成人综合在线 | 日韩视频在线一区二区 | 日韩精品一区二区三区视频播放 | 日韩在线免费 | 久久久久久久av | 黄色一级大片在线观看 | 草草影院ccyy| 国产人成在线观看 | 久久久久九九九九 | 国产精品视频免费观看 | 国产资源一区二区三区 | 成人婷婷 | 亚洲一区精品在线 | 亚洲精品黄 | 日韩国产高清在线观看 | 久久精品在线 | 天天综合日日夜夜 | 999久久久久久久 | 久久国产综合 | 日韩成人精品一区 | 欧美性网 | 国产精品2区 | 91精品国产综合久久国产大片 | 国产午夜影院 | 日韩精品在线播放 | 久久国产精品一区 | 日韩精品免费视频 | 欧美在线观看免费观看视频 | 亚洲视频一区在线 | 97精品国产 | 国产免费福利小视频 | 亚洲iv一区二区三区 | 欧美自拍网站 | 久久精品亚洲 | 亚洲一区二区中文字幕在线观看 | 欧美精品黄 | 亚洲成网站| 久久国产精品视频 | 欧美一区二区三区四区五区无卡码 | 成人一区二区三区在线观看 |