首页 > 数据库 >Oracle数据库where语句中的or和and

Oracle数据库where语句中的or和and

时间:2024-05-06 11:24:05浏览次数:31  
标签:语句 00 date MM MI YYYY DATE Oracle where

SELECT *
FROM Table_Name
WHERE (LAST_MODIFIED_DATE >= TO_DATE('${FROM_EXTRACT_VALUE}','YYYY-MM-DD HH24:MI:SS') AND LAST_MODIFIED_DATE < TO_DATE('${TO_EXTRACT_VALUE}','YYYY-MM-DD HH24:MI:SS')) OR (CREATION_DATE >= TO_DATE('${FROM_EXTRACT_VALUE}','YYYY-MM-DD HH24:MI:SS') AND CREATION_DATE < TO_DATE('${TO_EXTRACT_VALUE}','YYYY-MM-DD HH24:MI:SS')) 
  从Oracle数据库抽数到hadoop,where语句一般会写成or的方式(便于理解),但是OR的方式只能用到 last_modified_date 或者 creatiion_date 的单个索引,不能用到组合索引。如果想用到组合索引就要写成and not的方式。因为OR是跑两个query,如果数据量非常大,全表扫描是特别慢的。解决办法如下: 1)由于表中creatiion_date是没有索引的,即使last_modified_date有索引,整体的抽数时间也是非常久,会导致snapshot too old的问题。所以如果选择OR的方式就要再给creatiion_date建个索引。 2)and not是能用到combine index的,目前可以用到last_modified_date的索引(要加上hint),再加上lob的参数(内部参数),就算不建索引也是可以满足要求的(15分钟,之前2个小时)。
SELECT *
FROM Table_Name
WHERE
last_modified_date >= TO_DATE('2024-04-13 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and creation_date < TO_DATE('2024-04-13 02:00:00', 'YYYY-MM-DD HH24:MI:SS')
and not (creation_date < TO_DATE('2024-04-13 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and last_modified_date >= TO_DATE('2024-04-13 02:00:00', 'YYYY-MM-DD HH24:MI:SS'));

  

标签:语句,00,date,MM,MI,YYYY,DATE,Oracle,where
From: https://www.cnblogs.com/nn2dw/p/18174650

相关文章

  • Oracle【ORA-00600 internal error code arguments [2662]】恢复一例
    背景1.数据库版本:11.2.0.42.未开启归档3.没有备份:无RMAN备份、无DUMP备份4.数据库redolog全部删除。解决思路:Oracle的隐含参数:_allow_resetlogs_corruption=TRUESYS>altersystemset"_allow_resetlogs_corruption"=truescope=spfile;数据库关闭数据库,在启动SQL......
  • Oracle(+)号用法
    Oracle(+)号用法select*fromt_Aa,t_Bbwherea.id=b.id(+);select*fromt_Aa leftjoint_Bbona.id=b.id; +表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在右表,左表就是全部显示,所以是左连接,以上两句SQL,效果一致。select*fromt_Aa,t_Bbwhere......
  • Oracle 检查当前数据库CPU和PSU补丁信息
     方法一:登录数据库,检查DBA_REGISTRY_HIST视图 select*fromdba_registry_history;ACTION_TIMEACTIONNAMESPACEVERSIONIDBUNDLE_SERIESCOMMENTS-------------------------------------------------------------------......
  • Apache Shiro 721反序列化漏洞Padding Oracle Attack
    目录漏洞原理复现修复方式漏洞原理Shiro的RememberMeCookie使用的是AES-128-CBC模式加密。其中128表示密钥长度为128位,CBC代表CipherBlockChaining,这种AES算法模式的主要特点是将明文分成固定长度的块,然后利用前一个块的密文对当前块的明文进行加密处理。这种模式的加......
  • sql查询语句流程
    连接器:建立连接,管理连接、校验用户身份查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行解析SQL,通过解析器对SQL查询语句进行词法分析、语法分析,然后构建语法树执行SQL:执行SQL共有三个阶段:预处理阶段:检查表或字段是否存在;将select*中的*符号扩展为表......
  • mysql执行update语句流程
    客户端发送更新命令到MySQL服务器,经过处理连接、解析优化等步骤;Server层向InnoDB存储引擎要id=1的这条记录;存储引擎先从bufferpoll中查找这条记录,有的话直接返回,没有则从磁盘加载到bufferpoll中然后返回;Server层执行器修改这条记录的name字段值;存储引擎更新修改到内存中;存储......
  • 解析mysql奇葩语句
    首先看看完整的表如下图那么看看一个比较奇葩的语句select*fromuserswherename='aa'='bb'这个语句为啥能执行成功以及为什么打印出了除了两个aa之外的所有行数据呢。我们来解释一下原理。当我们使用where语句的时候,where是会一行一行的匹配的,同时where的执......
  • [转帖]10 Hardware Components of Oracle Exadata
    https://docs.oracle.com/en/engineered-systems/exadata-database-machine/dbmso/hardware-components-exadata-db-machine.html#GUID-EBA9369F-A2AB-449F-A361-40F48A5B37C2 OracleExadata consistsofdatabaseservers,storageservers,andthenetworkcomponent......
  • Oracle之数据库一致性读的原理
    1.概述在Oracle数据库中,undo主要有三大作用:提供一致性读(ConsistentRead)、回滚事务(RollbackTransaction)以及实例恢复(InstanceRecovery)。2.原理一致性读是相对于脏读(DirtyRead)而言的。假设某个表T中有10000条记录,获取所有记录需要15分钟时间。当前时间为9点整,某用户A发出一条......
  • Mysql中的DQL语句
    1.基本语法SELECTcolumn1,column2,...FROMtable_name[WHEREcondition][ORDERBYcolumn_name[ASC|DESC]][LIMITnumber];*ORDERBYcolumn_name[ASC|DESC]是一个可选的子句,用于指定结果集的排序顺序,默认是升序(ASC)。*LIMITnumber是一个可选的子句,用于限制......