oracle怎么条件强制走索引,如何让oracle的select强制走索引

大多数情况下,oracle数据库内置的查询优化策略还是很成功的,但偶尔也有犯2的时候,即使有索引,也会做全表扫描,可以参考以下语句的写法,强制让select语句使用索引

CREATE OR REPLACE VIEW V_RES_CBA AS

SELECT /*+INDEX(SEG IDX_T_RES_ALLOSEG_ALLOID)*/

ALLO.ALLOID AS RESID,

NULL AS AWB,

ALLO.ALLOTMENT AS ALLO_ID,

DAYS.FDATE + NVL(SEG.DAYSDISP, 0) AS FDATE,

ALLO.SPECULD AS SPECULD

FROM T_RES_ALLO ALLO, T_RES_ALLOSEG SEG, V_FDATE DAYS

WHERE ALLO.ALLOID = SEG.ALLOID

AND ((ALLO.ALLOIND = 'A' AND ALLO.ALLO_DATE = DAYS.FDATE) OR

(ALLO.ALLOIND = 'S' AND

NVL(ALLO.SDATE, ALLO.ALLO_DATE) = DAYS.FDATE))

UNION

SELECT /*+INDEX(SEG IDX_T_RES_ALLOSEG_ALLOID)*/

ALLO.ALLOID AS RESID,

NULL AS AWB,

ALLO.ALLOTMENT AS ALLO_ID,

DAYS.FDATE + NVL(SEG.DAYSDISP, 0) AS FDATE,

ALLO.SPECULD AS SPECULD

FROM T_RES_ALLO ALLO, T_RES_ALLOSEG SEG, V_FDATE DAYS

WHERE ALLO.ALLOID = SEG.ALLOID

AND ALLO.ALLO_DATE IS NULL

AND ALLO.ALLOIND = 'A'

AND (DAYS.FDATE >= ALLO.SDATE AND DAYS.FDATE <= ALLO.EDATE AND

INSTR(ALLO.WEEKDAY, DAYS.WEEKDAY) > 0)

AND NOT EXISTS (SELECT subQuery.ALLOID

from T_RES_ALLO subQuery

where subQuery.ALLO_DATE = DAYS.FDATE

and subQuery.ALLOTMENT = ALLO.ALLOTMENT)

;

要点:

1、/*+INDEX(SEG IDX_T_RES_ALLOSEG_ALLOID)*/ 这里的/*...*/中间不要有空格

2、表名要用别名,即:以上面的sql语句为例,要使用SEG,而不是T_RES_ALLOSEG

如何让oracle的select强制走索

大多数情况下,oracle数据库内置的查询优化策略还是很成功的,但偶尔也有糊涂的时候,即使有索引,也会做全表扫描,可以参考以下语句的写法,强制让select语句使用索引. (注意:走索引不一定是最优的 ...

Mysql&colon; 强制走索引:mysql between 日期索引 索引问题-日期索引使用

Mysql: mysql between 日期索引 索引问题-日期索引使用 表结构: dep_date dep arr 联合索引: ind_coll_date_route  (dep_date ,de ...

16-SQLServer强制走索引

一.注意点 1.使用with(index(索引名称))来使SQL强制走索引. 二.示例截图 1.创建非聚集索引 2.不使用with,不走索引的截图 3.使用with,强制走索引的截图

mysql 强制走索引

查询是数据库技术中最常用的操作.查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的SQL语句后, 执行这条SQL语句,然后将查询到的结果返回给客户端.虽然过程 ...

让mysql查询强制走索引

select * from slot_value_temp force index(idx_slot_type_id) WHERE slot_type_id = 'xxxxxx'; 不定期更新

MySQL实现强制查询走索引和强制查询不缓存

0.表结构如下:(包含两个索引) Create Table: CREATE TABLE `user` ( `userID` ) NOT NULL, `userCode` ) DEFAULT NULL, ...

强制MySQL查询走索引和强制查询不缓存

有些情况下,表中创建了索引但是EXPLAIN的查看执行计划的时候发现并没有走索引.是因为优化器认为该语句不使用索引效率更好. 当然也可以强制走索引.类似: SELECT uid,uname FROM ...

oracle 基础知识&lpar;十四&rpar;----索引扫描

(1)索引唯一扫描(index unique scan) 通过唯一索引查找一个数值经常返回单个ROWID.如果该唯一索引有多个列组成(即组合索引),则至少要有组合索引的引导列参与到该查询中,如创建一个 ...

SQL IN 一定走索引吗?

摘要 IN 一定走索引吗?那当然了,不走索引还能全部扫描吗?好像之前有看到过什么Exist,IN走不走索引的讨论.但是好像看的太久了,又忘记了.哈哈,如果你也忘记了MySQL中IN是如何查询的,就来复 ...

随机推荐

Tomcat关闭日志catalina&period;out

catalina.out文件会越来越大,对系统的稳定造成了一定的影响.conf/logging.properties 一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统 ...

sql 执行 delete 的时候,结合子查询 exists ,怎样支持别名呢?

在做一个数据删除的时候,条件需要用到关联其他表,用到子查询,但是查询的时候使用 别名 没有问题,但是删除就有语法错误,在网上查询后得到了完美解决: --查询出来需要删除的数据 select * fro ...

千份位Javascript Thousand Separator &sol; string format

function Separator(str){ return str.split(/(\d+)(\d{3})(\d{3})(\d{3})(\d{3})/).join(',').replace(/^, ...

Android开发Tips-1

打算记录一些自己在开发过程中遇到的一些技巧性代码,方便以后遇到相似功能时能够快速的找到,那就从这里开始吧. 1,如何截取当前屏幕(不包括当前Activity的Title)并分享: a,获取当前Acti ...

ZOJ 1012 Mainframe

题目大意:有一台主机,有m个cpu和n的内存,有l个任务,每个任务需消耗一定的cpu和内存,给出任务的开始时间和截止时间,完成任务可获得一定的金钱,同时提前完成有奖金,延后完成要扣钱.计算到某个时间所 ...

JWT实战:使用axios&plus;PHP实现登录认证

上一篇文中,我们学习了什么是JWT(Json Web Token),今天我们来结合实例给大家讲述JWT的实战应用,就是如何使用前端Axios与后端PHP实现用户登录鉴权认证的过程. 查看演示 下载源码 ...

I2C&lpar;一&rpar;框架

目录 I2C(一)框架 引入 整体框架 数据结构 文件结构 流程简述 参考文档 title: I2C(一)框架 date: 2019/1/28 17:58:42 toc: true --- I2C(一 ...

Tomcat Cluster

Tomcat群集配置| Tomcat集群| MuleSofthttps://www.mulesoft.com/tcat/tomcat-cluster Tomcat Clustering - A Ste ...

门户级UGC系统的技术进化路线 &lbrack;转&rsqb;

原文链接   :http://weibo.com/p/1001603789147444803230 新闻门户网站的评论系统,或者称为跟帖.留言板,是所有门户网站的核心标准服务组件之一.与论坛.博客等其 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值