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

Oracle不同版本在驅(qū)動運(yùn)行中如何使用Java Date

數(shù)據(jù)庫 Oracle
本文主要涉及到的是Oracle不同版本在驅(qū)動運(yùn)行中如何使用Java Date的相關(guān)實(shí)際操作步驟的介紹,希望你會有所收獲。

本文主要介紹的是Oracle不同版本在驅(qū)動運(yùn)行中如何使用Java Date的相關(guān)問題的解答,如果你在計(jì)算機(jī)學(xué)習(xí)的過程中遇到Oracle不同版本在驅(qū)動運(yùn)行中使用Java Date時(shí),出現(xiàn)的類似的問題,你就可以點(diǎn)擊以下的文章。

這里兩天都在對一條sql進(jìn)行調(diào)優(yōu)。該sql并不復(fù)雜,類似于

select ... from some_view union all select ... from some_table where datetime >= d1 and datetime< d2 and .... 底層使用ibatis2.1.6 + Oracle 10g。

今天花了些時(shí)間繼續(xù)研究這個(gè)問題,導(dǎo)致該問題的原因的確是“導(dǎo)致Oracle對datetime字段進(jìn)行了隱式類型轉(zhuǎn)換,最終CBO未能使用該列的全局索 引”,不過問題不是出在ibatis上而是Oracle driver。

設(shè)我們使用這樣的sql通過綁定變量(類型為java.util.date)查詢數(shù)據(jù)庫,其中end_date是date類型且建立了索引。

  1. “select count(*) from table1 where end_date >
    = :1 and end_date <= :2” 

通常,面對這樣的sql,我們希望它的執(zhí)行計(jì)劃走index range scan。然而在默認(rèn)情況下Oracle CBO是不會選擇走索引地,以上面這語句為例,Oracle實(shí)際走的是table full scan。為什么會這樣 呢?

這類問題是Oracle不同版本在9.2以后引入了TIMESTAMP才開始出現(xiàn)地。

在 9.2之前,Oracle只有DATE,而沒有TIMESTAMP。在jdbc preparedStatement.setTimestamp時(shí),綁定變量的類型會被正確的設(shè)置為DATE。而在9.2之后,Oracle開始支持 TIMESTAMP了,這兩者都能支持精度為yyyy-MM-dd hh24:mi:ss的時(shí)間(當(dāng)然TIMESTAMP能支持到納秒級別),但jdbc driver的api未變同樣在preparedStatement.setTimestamp時(shí),Oracle driver就得選擇到底該把綁定變量的類型設(shè)置為DATE還是TIMESTAMP呢?

估計(jì)是由于TIMESTAMP的精度更高,Oracle 最終默認(rèn)選擇了將綁定變量的類型設(shè)置為了TIMESTAMP。那么這個(gè)時(shí)候,如果面對實(shí)際屬性為DATE的列,那么就會導(dǎo)致 Oracle隱式地進(jìn)行形如“TO_TIMESTAMP(date_column) = parameter_timestamp”轉(zhuǎn)換,要 知道Oracle CBO不會選擇被某函數(shù)作用的列上的索引,除非是函數(shù)索引。

因此,最終也會導(dǎo)致最上面的情況使用table full scan而不是index range scan。

Oracle就沒有提供別的方法來正確地提供綁定變量嗎?Oracle提供 了幾個(gè)方法來解決這個(gè)問題

1.升級到11g并使用新的正確的driver api。

2.將DATE列全都改成 TIMESTAMP列。

3.使用V8Compatible flag。

 

以上的相關(guān)內(nèi)容就是對Oracle不同版本驅(qū)動中使用Java Date的問題的介紹,望你有所收獲。

【編輯推薦】

  1. Oracle clob實(shí)際相關(guān)代碼的解析
  2. Oracle存儲過程的返回列表如何以java來調(diào)用
  3. Oracle版本驅(qū)動中使用Java Date產(chǎn)生問題的解答
  4. Oracle clob實(shí)際相關(guān)代碼的解析
  5. Oracle數(shù)據(jù)庫備份和恢復(fù)的基本命令
責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-03-30 13:02:51

Oracle版本

2018-01-08 15:30:18

Linux命令date

2018-06-20 09:39:47

Oracle存儲配置

2010-10-28 15:38:24

Oracle to_d

2023-01-12 11:31:00

K8sToken

2010-04-01 10:55:48

Oracle 數(shù)據(jù)類型

2011-06-20 14:00:26

Qt qmake

2010-05-05 17:53:39

Oracle 8i

2010-03-30 15:54:27

Oracle date

2021-11-11 09:01:01

Helm Chart Kubernetes

2010-04-21 13:21:24

Oracle時(shí)間

2010-03-30 12:30:45

Oracle Hibe

2010-04-30 08:47:22

Oracle分頁存儲

2010-03-30 19:19:13

Oracle產(chǎn)品

2021-02-06 17:55:41

微服務(wù)Maven版本控制

2010-05-06 10:09:44

Oracle in

2014-12-22 09:48:58

DBCAOracle 11

2010-04-23 15:34:41

Oracle 數(shù)據(jù)庫

2024-12-17 16:26:31

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美性网| 亚洲成色777777在线观看影院 | 亚洲综合色网站 | 男女国产视频 | 国产精品久久久久久久久久 | 国产99久久精品一区二区永久免费 | 精品福利视频一区二区三区 | 美女一级a毛片免费观看97 | av网址在线 | 精品9999| 中文字幕在线视频免费视频 | 7777在线视频免费播放 | 久久专区| 99re超碰| 日韩成人免费视频 | 91视频久久 | 国产一区二区三区在线看 | 日韩欧美一区二区三区四区 | 日日摸夜夜添夜夜添特色大片 | 中文字幕精品一区二区三区精品 | 毛片大全 | 国产精品亚洲一区二区三区在线观看 | a级片在线观看 | 久久丁香 | 中文字幕在线第一页 | 粉色午夜视频 | 夜夜爽99久久国产综合精品女不卡 | 久久久久一区二区三区 | 日韩国产中文字幕 | 99re在线 | 久草院线 | 国产视频二区 | 中文字幕视频在线观看 | 久久的色| 国产精品视屏 | www九色| 亚洲精品在线视频 | 九九久久久 | 午夜男人视频 | 国产综合久久久 | 手机av网 |