如何使用这个索引

简介: 今天看《oracle高效设计》中函数索引的内容,遇到一个简单的问题,如何使用这个索引:例子摘自《oracle高效设计》:create table project(project_ID number primary key,teamid number,job ...

今天看《oracle高效设计》中函数索引的内容,遇到一个简单的问题,如何使用
这个索引:

例子摘自《oracle高效设计》:

create table project
(project_ID number primary key,
teamid number,
job varchar2(100),
status varchar2(20) check (status in ('ACTIVE', 'INACTIVE'))
);


create UNIQUE index
job_unique_in_teamid on project
( case when status = 'ACTIVE' then teamid else null end,
case when status = 'ACTIVE' then job else null end
)
/


insert into project(project_id,teamid,job,status)
values( 1, 10, 'a', 'ACTIVE' );


insert into project(project_id,teamid,job,status)
values( 2, 10, 'a', 'ACTIVE' );
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (SCOTT.SCOTT.JOB_UNIQUE_IN_TEAMID)


我关心的是如何使用这个索引来查询数据,测试如下:
set autotrace traceonly
SELECT * FROM project
WHERE CASE "STATUS" WHEN 'ACTIVE' THEN "TEAMID" ELSE NULL END = 10
AND CASE "STATUS" WHEN 'ACTIVE' THEN "JOB" ELSE NULL END = 'a'

----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 90 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| PROJECT | 1 | 90 | 2 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | JOB_UNIQUE_IN_TEAMID | 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------


目录
相关文章
|
3月前
|
存储 JSON 自然语言处理
es索引文档过程
Elasticsearch 索引文档流程:先通过 REST API 或客户端创建索引,定义文档结构的映射;接着索引 JSON 格式的文档,Elasticsearch 解析、索引并存储;最后,文档以倒排索引形式存储,支持高效全文搜索。
48 5
|
4月前
|
存储 Java 数据库
深入剖析---数据表如何用索引
【11月更文挑战第25天】在大数据时代,处理千万级数据表已成为许多企业和开发者必须面对的挑战。如何快速、高效地查询这些数据,成为衡量系统性能的关键指标之一。索引,作为数据库优化中最重要的工具之一,通过特定的数据结构和算法,能够显著提高查询效率。本文将从第一原理出发,对索引的相关概念、业务场景、历史背景、功能点、底层原理进行深入分析,并使用Java模拟索引的底层实现。
50 1
|
10月前
|
JSON 自然语言处理 数据格式
5.索引原理
5.索引原理
|
10月前
|
存储 数据库 索引
faiss 三种基础索引方式
faiss 三种基础索引方式
444 1
|
10月前
|
存储 分布式计算 监控
如何使用索引加速查询?
【5月更文挑战第8天】如何使用索引加速查询?
68 1
|
存储 关系型数据库 MySQL
MySQL数据库操作篇5(索引的原理及用法)
MySQL数据库操作篇5(索引的原理及用法)
128 0
|
数据库 索引
简述创建索引的注意事项
创建索引是提高数据库查询性能的重要手段之一,合理地创建索引可以加快查询速度,提升数据库的整体性能。以下是创建索引时需要注意的几个重要事项:
308 0
|
存储 前端开发 Java
ElasticSearch快速入门之创建索引库、创建映射、创建文档、搜索文档
ElasticSearch快速入门之创建索引库、创建映射、创建文档、搜索文档
437 0
|
存储 自然语言处理 算法
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
MySQL中的索引包括普通索引、全文索引、单列索引、多列索引和空间索引等。
420 0
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
|
JSON 分布式计算 Hadoop
创建索引库和索引演示 | 学习笔记
快速学习创建索引库和索引演示
创建索引库和索引演示 | 学习笔记

相关实验场景

更多