oracle raw类型 索引,为什么RAW数据类型可以建立索引,但是不走索引
情况描述:
业务sql:
select count(*)
from px_apply t
where t.SITE_ID = '2C9146A12760F52A01276124EFB90016'
and t.CLASS_ID = '93E7EDF83B13CA6FE040007F01005BD5'
and t.IS_RESERVED = 0
and t.STATUS in (3, 4, 5)
操作系统信息:
LSB Version: :core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: RedHatEnterpriseAS
Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
Release: 4
Codename: NahantUpdate5
数据库信息:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
其中一个测试:
索引建立:
create index ix_px_apply_SITE_ID on hz_bsp.px_apply(SITE_ID) tablespace XXX;
具体sql:
select count(*)
from px_apply t
where t.SITE_ID = '2C9146A12760F52A01276124EFB90016'
执行计划:
SQL> set linesize 1000
SQL> set autotrace traceonly
SQL> set timing on
SQL> select count(*)
2 from px_apply t
3 where t.SITE_ID = '2C9146A12760F52A01276124EFB90016';
已用时间: 00: 00: 00.31
执行计划
----------------------------------------------------------
Plan hash value: 1051324080
-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 17 | 2361 (2)| 00:00:29 |
| 1 | SORT AGGREGATE | | 1 | 17 | | |
|* 2 | TABLE ACCESS FULL| PX_APPLY | 398K| 6608K| 2361 (2)| 00:00:29 |
-------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter(RAWTOHEX("T"."SITE_ID")='2C9146A12760F52A01276124EFB90016'
)
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
10620 consistent gets
0 physical reads
0 redo size
410 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
今天遇到一个数据库里面有很很多RAW(16)字段。目前数据库cpu占用率很高,通过操作系统物理进程找到相关问题sql,sql里面有三个RAW字段,并且三个RAW字段是查询条件。
我的解决办法:
1、a、期望在3列字段建立复合索引
b、dbms_stats.gather_table_stats
结果:全表扫描
2、a、分别在三个RAW建立index
b、dbms_stats.gather_table_stats
结果:全表扫描
问题:google很多下,说Long Raw不可以建立索引,RAW可以建立索引,但是为什么不走索引呢。
有兄弟遇到过类似的问题吗?给我一些信息。万分感谢。
注:Oracle® Database PL/SQL User's Guide and Reference
10g Release 2 (10.2)
RAW Datatype
You use the RAW datatype to store binary data or byte strings. For example, a RAW variable might store a sequence of graphics characters or a digitized picture. Raw data is like VARCHAR2 data, except that PL/SQL does not interpret raw data. Likewise, Oracle Net does no character set conversions when you transmit raw data from one system to another.
The RAW datatype takes a required parameter that lets you specify a maximum size up to 32767 bytes. The syntax follows:
RAW(maximum_size)
You cannot use a symbolic constant or variable to specify the maximum size; you must use an integer literal in the range 1 .. 32767.
You cannot insert RAW values longer than 2000 bytes into a RAW column. You can insert any RAW value into a LONG RAW database column because the maximum width of a LONG RAW column is 2147483648 bytes or two gigabytes. However, you cannot retrieve a value longer than 32767 bytes from a LONG RAW column into a RAW variable. Note that the LONG RAW datatype is supported only for backward compatibility; see "LONG and LONG RAW Datatypes" for more information.
[本帖最后由 mahanso 于 2011-5-26 15:36 编辑]
oracle raw类型 索引,为什么RAW数据类型可以建立索引,但是不走索引相关推荐
- oracle执行计划走索引类型,SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE :VAR,为什么执行计划不走索引?...
SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE :VAR,为什么执行计划不走索引? 中文社区 (MOSC) 数据库 (MOSC) 6 Replies Last update ...
- MySQL数据类型不一致_数据类型不一致导致的SQL不走索引
前几天,同事发来一条SQL,说是更新操作的时候执行的很慢,我看了下,数据量也不是很大.再查看执行计划,发现是执行路径错误导致 前几天,,同事发来一条SQL,说是更新操作的时候执行的很慢,我看了下,数据 ...
- MySQL时间查询不走索引,MySQL带时间字段的范围查询不走索引了?
今天群里抛出了个乍看之下很迷的问题: 看到问题的第一瞬间,我想这是什么原理,比较方向的修改就能引起索引失效了?于是我自己先试了一下. 环境:MySQL 5.7.25 1. 创建测试表 我先整了个32万 ...
- oracle raw性能,对Oracle Raw类型的详细解剖
SQL create table datatype_test_raw(paddr raw(8)); Table created SQL insert into datatype_test_raw(pa ...
- oracle 不走索引的原因
oracle 不走索引的原因 2013-02-01 13:46 9098人阅读 评论(0) 收藏 举报 分类: oracle(27) create table tb2 as select ...
- 数据查询必备技能SQL调优:Mysql什么情况下不走索引
背景分析 今天领导在查询报表时,发现特别慢,于是引发一系列关于sql优化的工作,最终发现是分析同学在进行多表关联时进行不等值关联造成全表扫描,且使用字段无索引造成1W条数据表和20W数据表关联时执行缓 ...
- mysql哪些查询情况不走索引
在MySQL中,并不是你建立了索引,并且你在SQL中使用到了该列,MySQL就肯定会使用到那些索引的,有一些情况很可能在你不知不觉中,你就"成功的避开了"MySQL的所有索引. 1 ...
- 作为唯一索引_Mysql什么情况下不走索引?
本文基于Mysql5.7版本和InnoDB存储引擎. 1.InnoDB索引组织表 在InnoDB引擎中,表都是按照主键顺序组织存放的,这种存放方式的表称为索引组织表.InnoDB存储引擎中的表,都有主 ...
- mysql select不走索引_避免写出不走索引的SQL, MySQL
在MySQL中,并不是你建立了索引,并且你在SQL中使用到了该列,MySQL就肯定会使用到那些索引的,有一些情况很可能在你不知不觉中,你就"成功的避开了"MySQL的所有索引. 现 ...
最新文章
- Django进阶之session
- 来!一起搭建个永久运行的个人服务器吧!
- oracle数据类型--数值类型
- Keras命名体识别(NER)实战---自然语言处理技术
- frontpage中html编辑,FrontPage教程编辑网页
- commons-lang3:ArrayUtils
- oracle的aud文件,oracle asm实例的aud文件有关问题
- 在AJAX中可以使用的Response.Redirect 的冲突解决办法
- 开源ext2read代码走读之--“\\\\.\\PhysicalDrive0”意义?
- Android 混淆
- 成百家之言,纳万端思辨,SDCC 2017·深圳站响号以待
- 深入理解Linux 条件变量3:条件变量为什么要配合着锁使用?
- 如何避免拼多多售后?拼多多售后有哪些规则?
- pytorch组队学习
- 对学生公寓部建议和意见_关于进一步加强学生公寓管理工作的意见
- 计算机未检测到任何网络硬件,电脑提示windows没有检测到任何网络硬件怎么办...
- Ardunio开发实例-被动红外(PIR)运动传感器使用
- 【深度学习数学基础之线性代数】研究使用链式法则进行反向传播的求导算法
- SparkSQL 创建 DataFrame 的方式
- 智能手机的中文输入法统计