Oracle不同版本在驱动运行中如何使用Java Date (oracle是什么)

技术教程 2025-05-08 09:05:02 浏览
oracle是什么

本文主要介绍的是Oracle不同版本在驱动运行中如何使用Java Date的相关问题的解答,如果你在计算机学习的过程中遇到Oracle不同版本在驱动运行中使用Java Date时,出现的类似的问题,你就可以点击以下的文章。

这里两天都在对一条sql进行调优。该sql并不复杂,类似于

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

今天花了些时间继续研究这个问题,导致该问题的原因的确是“导致Oracle对datetime字段进行了隐式类型转换,最终CBO未能使用该列的全局索 引”,不过问题不是出在ibatis上而是Oracle driver。

设我们使用这样的sql通过绑定变量(类型为java.util.date)查询数据库,其中end_date是date类型且建立了索引。

通常,面对这样的sql,我们希望它的执行计划走index range scan。然而在默认情况下Oracle CBO是不会选择走索引地,以上面这语句为例,Oracle实际走的是table full scan。为什么会这样 呢?

这类问题是Oracle不同版本在9.2以后引入了vpsfwqwz/1772.html" target="_blank">timesTAMP才开始出现地。

在 9.2之前,Oracle只有DATE,而没有TIMESTAMP。在jdbc preparedStatement.setTimestamp时,绑定变量的类型会被正确的设置为DATE。而在9.2之后,Oracle开始支持 TIMESTAMP了,这两者都能支持精度为yyyy-MM-dd hh24:mi:ss的时间(当然TIMESTAMP能支持到纳秒级别),但jdbc driver的api未变同样在preparedStatement.setTimestamp时,Oracle driver就得选择到底该把绑定变量的类型设置为DATE还是TIMESTAMP呢?

不同版本在驱动运行中如何使用Java

估计是由于TIMESTAMP的精度更高,Oracle 最终默认选择了将绑定变量的类型设置为了TIMESTAMP。那么这个时候,如果面对实际属性为DATE的列,那么就会导致 Oracle隐式地进行形如“TO_TIMESTAMP(date_column) = parameter_timestamp”转换,要 知道Oracle CBO不会选择被某函数作用的列上的索引,除非是函数索引。

因此,最终也会导致最上面的情况使用table full scan而不是index range scan。

Oracle就没有提供别的方法来正确地提供绑定变量吗?Oracle提供 了几个方法来解决这个问题

1.升级到11g并使用新的正确的driver api。

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

Date

3.使用V8Compatible flag。

【编辑推荐】


WIN7 SP1 安装ORACLE 11G R2 client 不成功

要安装oracle 10g for vista 或 for 2008的版本,而且要改些配置,具体方法如下:首先下载,_vista_w2k8_x86_production_db(注意要下对了,不然没有文件)然后解压,在目录中找到(有两个,我的一个是在stage\prereq\db目录下,一个是在stage\prereq\db_prereqs\db目录下)进行添加修,添加如下代码: 注:如果安装的是客户端,将路径中的db改为client即可。而后还要修改一个文件,在install目录下先在[Certified Versions]#You can customise Error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE#Windows=5.0,5.1,5.2,6.0,6.1注:即在#Windows=5.0,5.1,5.2后面添加 ,6.0,6.1再添加下面代码:#[Windows-6.1-required] #Minimum display colours for OUI to run MIN_DISPLAY_COLORS=256#Minimum CPU speed required for OUI #CPU=300#[Windows-6.1-optional]以管理员身份运行另外,团IDC网上有许多产品团购,便宜有口碑

怎样在Ubuntu 14.04中安装Java

你打开终端,输入Java,回车,就会提示你Java所需组件所在的包,然后用sudo atp-get +包名安装,还有一个方法,在软件中心搜索新立德软件包管理工具!直接搜索jdk安装就行了!当然了!如果你是新手,建议安装Ubuntukylin 14.04,这是专为中国人定制的Ubuntu系统,好用,安装软件比较容易!

如何在WIN2008或WIN2012 64位系统安装32位SQL2000

按照以下步骤安装 SQL Server 2000:1,双击“x86\。 安装 SQL Server 2000 分析服务: 在sql2000安装盘CD1中打开STANDARD文件夹:另外下载MSSQL2000 64位数据库软件安装即可。 不过这个方法比较费时,在这里,请使用以下步骤;install”子文件夹中的 。 安装 SQL Server 2000 英语查询:3,双击“mseq\x86”子文件夹中的 setup;setup”子文件夹中的 ,我们建议你可以改为安装MSSQL2005或MSSQL2008即可。 如果你仍然需要安装SQL2000的话,方法如下,双击“msolap\。 4,最后安装SQL2000的SP4补丁:第一个方法 在日常服务器,云服务器或VPS中,因尔特网络工程师遇到部分使用了WIN2008 或WN2012 64位系统的用户需要安装SQL2000数据库软件,但是在安装过程提示该数据库软件与系统不兼容的字样。 笔者建议你采用第二个方法。 第二个方法:要在WIN2008或WIN2012 64位系统 64 位操作系统上安装此应用程序。 至此,MSSQL2000就在WIN2008或WIN2012 64位系统上安装成功了:2

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐