oracle索引

别再死磕USB HID了!用ESP32的Arduino框架手把手教你实现蓝牙鼠标键盘(附完整代码) 本文详细介绍了如何使用ESP32的Arduino框架实现蓝牙HID设备,包括鼠标和键盘的快速开发。通过现成的库和示例代码,开发者可以轻松打造自定义蓝牙外设,无需复杂的USB HID协议栈,适用于演示控制器、宏键盘等多种场景。 阅读详情

本文转载自《超详细oracle教程》电子书.

16.1、索引 
select * from   user_indexes 查询现有的索引   
select * from    user_ind_columns 可获知索引建立在那些字段上 


16.2、索引优缺点 
建立索引的优点 
   1.大大加快数据的检索速度; 
   2.创建唯一性索引,保证数据库表中每一行数据的唯一性; 
   3.加速表和表之间的连接; 
   4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。 
索引的缺点 
   1.索引需要占物理空间。 
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的
维护速度。 
 
16.3、创建索引的原则 
创建索引:创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据
的策略。 
--在 select 操作占大部分的表上创建索引; 
--在 where 子句中出现最频繁的列上创建索引; 
--在选择性高的列上创建索引(补充索引选择性,最高是 1,eg:primary key) 
--复合索引的主列应该是最有选择性的和 where 限定条件最常用的列,并以此类推第二

列……。 
--小于 5M 的表,最好不要使用索引来查询,表越小,越适合用全表扫描。 
16.4、使用索引的原则 
--查询结果是所有数据行的 5%以下时,使用 index 查询效果最好; 
--where 条件中经常用到表的多列时,使用复合索引效果会好于几个单列索引。因为当 sql 
语句所查询的列,全部都出现在复合索引中时,此时由于  Oracle  只需要查询索引块即可获
得所有数据,当然比使用多个单列索引要快得多; 
--索引利于 select,但对经常 insert,delte 尤其 update 的表,会降低效率。 
eg:试比较下面两条 SQL 语句(emp  表的 deptno 列上建有 ununique index): 
语句 A:SELECT dname, deptno FROM dept WHERE deptno NOT IN    
(SELECT deptno FROM emp);  
语句 B:SELECT dname, deptno FROM dept WHERE NOT EXISTS 
(SELECT deptno   FROM emp WHERE dept.deptno = emp.deptno);  
这两条查询语句实现的结果是相同的,但是执行语句 A 的时候,ORACLE 会对整个 emp 表
进行扫描,没有使用建立在 emp 表上的 deptno 索引,执行语句 B 的时候,由于在子查询中
使用了联合查询, ORACLE 只是对 emp 表进行的部分数据扫描,并利用了 deptno 列的索引,
所以语句 B 的效率要比语句 A 的效率高。 
 
----where  子句中的这个字段,必须是复合索引的第一个字段; 
eg:一个索引是按 f1, f2, f3 的次序建立的,若 where  子句是 f2 = : var2,  则因为 f2  不是索
引的第 1 个字段,无法使用该索引。 
----  where  子句中的这个字段,不应该参与任何形式的计算:任何对列的操作都将导致表
扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。 
----应尽量熟悉各种操作符对  Oracle  是否使用索引的影响:以下这些操作会显式
(explicitly)地阻止  Oracle  使用索引:  is null ;   is not null ;   not in;   !=;   like ; 
numeric_col+0;date_col+0; char_col||' ';   to_char;   to_number,to_date  等。 
Eg: 
Select jobid from mytabs where isReq='0' and to_date (updatedate) >= to_Date ( '2001-7-18', 
'YYYY-MM-DD');--updatedate列的索引也不会生效。 
16.4、创建索引 
create index abc on student(sid,sname); 
create index abc1 on student(sname,sid); 
这两种索引方式是不一样的 
索引 abc对Select * from student where sid=1;  这样的查询语句更有效 
索引 abc1 对Select * from student where sname=‟louis‟;  这样的查询语句更有效 
因此建立索引的时候,字段的组合顺序是非常重要的。一般情况下,需要经常访问的字段
放在组合字段的前面 

16.5、索引的存储 
索引和表都是独立存在的。在为索引指定表空间的时候,不要将被索引的表和索引指向同
一个表空间,这样可以避免产生 IO 冲突。使 Oracle 能够并行访问存放在不同硬盘中的索
引数据和表数据,更好的提高查询速度。 
16.6、删除索引 
 drop index PK_DEPT1; 
16.7、索引类型 
B树索引(B-Tree Index) 
创建索引的默认类型,结构是一颗树,采用的是平衡B树算法: 
  右子树节点的键值大于等于父节点的键值 
  左子树节点的键值小于等于父节点的键值 
比如有数据:100,101,102,103,104,105,106 


位图索引(BitMap Index) 
如果表中的某些字段取值范围比较小,比如职员性别、分数列 ABC 级等。只有两个值。
这样的字段如果建 B树索引没有意义,不能提高检索速度。这时我们推荐用位图索引 
Create BitMap Index student on(sex);

16.8、管理索引 
1)先插入数据后创建索引 
向表中插入大量数据之前最好不要先创建索引,因为如果先建立索引。那么在插入每行
数据的时候都要更改索引。这样会大大降低插入数据的速度。 
2)设置合理的索引列顺序 
3)限制每个表索引的数量 
4)删除不必要的索引 
5)为每个索引指定表空间 
6)经常做 insert,delete 尤其是 update 的表最好定期 exp/imp 表数据,整理数据,降低碎

片(缺点:要停应用,以保持数据一致性,不实用);有索引的最好定期 rebuild索引(rebuild
期间只允许表的 select操作,可在数据库较空闲时间提交),以降低索引碎片,提高效率 
 
16.8、索引问题 
1:针对一个表的查询语句能否会用到两个索引? 
2:如果能用到,那么其实现原理是怎样的? 
3:效率如何?其代价如何,比如额外开销等。 

回答: 
1.一个表的查询语句可以同时用到两个索引。如下图:


2.索引是以独立于表存在的一种数据库对象,它是对基表的一种排序(默认是B树索引就是二叉树的排序
方式),比如: 
      t表(x,y,z) ,在x,y,z上分别都建立了索引(index1,index2,index3),那在查询select * from t where x=1 and 
y=2;的时候,会分别用到index1,index2。 
      原理是先到index1索引表中查到符合x=1条件的记录,然后到index2索引表中查到y=2条件的记录。  
3.这样的查询效率,肯定是大于没有索引情况的全表扫描(table access full),但是有两个问题。 
 
    问题一:建立索引将占用额外的数据库空间,更重要的是增删改操作的时候,索引的排序也必须改变,
加大的维护的成本 
    问题二:如果经常查询 x=?和 y=?,那推荐使用组合 index(x,y),这种情况下组合索引的效率是远高于
两个单独的索引的。 
  
同时在用组合索引的时候,大家一定要注意一个细节:建立组合索引 index(x,y,z)的时候,那在查询条件
中出现x,xy,xyz,yzx都是可以用到该组合索引,但是y,yz,z是不能用到该索引的。关于这段话的原文如下:  
 
A leading portion of an index is a set of one or more columns that were specified first and consecutively in the 
list of columns in the CREATE INDEX statement that created the index. Consider this CREATE INDEX 
statement: 
 
CREATE INDEX comp_ind ON table1(x, y, z); 
 
x, xy, and xyz combinations of columns are leading portions of the index 
 
yz, y, and z combinations of columns are not leading portions of the index 

python批量调用大模型API:多线程和异步协程 本文介绍了利用多线程技术批量调用大模型API的实现方法。核心是通过并发请求提高处理效率,主要采用线程池管理并发数量、结果聚合等技术。文章提供了一个完整的Python实现示例,包含APIBatchCaller类及其single_api_call和batch_call方法,详细解析了并发控制、错误处理等关键点,并给出了使用注意事项,包括并发数设置、重试策略和超时处理等。该方案特别适合IO密集型任务,能显著提升批量API调用的效率。 阅读详情

相关推荐

C++坦克大战源代码

【代码】C++坦克大战源代码。

强国豪,林中霖 2609

查看Oracle的表中有哪些索引(用user_indexes和user_ind_columns)

用user_indexes和user_ind_columns系统表查看已经存在的索引 对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns)来查看其具体内容,例如是属于那个表,哪个列和,具体有些什么参数等等。 user_indexes: 系统视图存放是索引的名称以及该索引是否是唯一索引等信息。 user_ind_...

2362

MobaXterm结合SSH密钥对安全连接阿里云ECS的实战教程

本文详细介绍了如何使用MobaXterm结合SSH密钥对安全连接阿里云ECS的实战教程。通过对比传统密码登录的风险,重点讲解了密钥对的生成与配置、阿里云控制台的密钥绑定技巧,以及MobaXterm的高级设置和故障排查方法,帮助用户实现高效、安全的远程连接。

weixin_29208327的博客 467

用user_indexes和user_ind_columns系统表查看已经存在的索引

用user_indexes和user_ind_columns系统表查看已经存在的索引2009-04-01 17:04:59|  分类: 专业资料 |  标签: |字号大中小 订阅 对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_

aobao2003的专栏 1593

AVS3代码阅读HPM4.0

参考AVS3代码阅读(HPM6.0)(一.整体架构以及CU划分部分代码) 版本:HPM4.0 核心文件:app_encoder.c   要做的是帧间预测,所以前面的函数先暂时不管了,挖个坑以后再填。直接从enc_pic看起。 enc_pic()    ...

CRR的博客 3187

Windows上搭建OpenHarmony星闪开发环境:HiSpark Studio全流程指南

嵌入式开发中,环境搭建是项目启动的关键步骤。OpenHarmony作为开源操作系统,其构建体系依赖Python脚本和GN/Ninja工具链,对版本兼容性要求严格。星闪(NearLink)技术作为新一代短距无线通信方案,在时延、并发和抗干扰方面优势显著,广泛应用于智能家居、工业控制等场景。在Windows平台上,通过HiSpark Studio集成开发工具,开发者可高效完成代码编辑、编译、烧录与调试。然而,Python版本冲突、环境变量配置、驱动签名等问题常导致搭建失败。本文详细拆解从系统准备到编译验证的全流

weixin_32658257的博客 345

Oracle索引_约束

用user_indexes和user_ind_columns系统表查看已经存在的索引 对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns)来查看其具体内容,例如是属于那个表,哪个列和,具体有些什么参数等等。 user_indexes: 系统视图存放是索引的名称以及该索引是否是唯一索引等信息。 user_ind_colum

星星_月亮的光芒 727

【雕爷学编程】MicroPython手册之 Teensy 4.1 实时时钟 (RTC)

在类的初始化函数中,定义了用于控制I2C总线的i2c对象和RTC模块的I2C地址。接着,使用该引脚初始化了一个Pin对象。它还提供了8个串口,3个SPI端口,3个I2C端口,2个I2S/TDM数字音频端口,3个CAN总线(其中一个支持CAN FD),以及一个SDIO(4位数据)原生SD卡端口12。2、内存:Teensy 4.1配备了1024 KB的RAM(其中512 KB是紧密耦合的),8 MB的Flash(其中64 KB用于恢复和EEPROM模拟),以及两个位置可以选择添加更多的QSPI内存芯片。

雕爷学编程 575

Oracle|索引的使用

Oracle索引的使用

Tina的博客 983

国网DLT698.45协议——采集系统、数据交换(三)

物理层规定了通信单元或其他终端设备与多功能电表的通信接口,接口的物理与电气特性。常见的物理层传输方式有对于RS485、红外、载波通信等通信信道。将数据包装成可传输的帧格式。1、根据通信配置参数完成端口的初始化配置,通信状态初始化为准备接收状态,初始化相关计数器及缓冲区指针。2、链路层及控制子模块负责通信数据的收发控制,各类超时问题的处理。无通信数据接收时,定时初始化通信端口。3、完成协议帧的解析及应答。

一个bug是bug,多个bug能work 8052

windows 配置 libxml2

路径:\libiconv-1.9.2-1-src.zip\src\libiconv\1.9.2\libiconv-1.9.2\include\。执行完后,在当前win32目录中会生成了一个bin.msvc目录,其中就有开发需要的libxml2.lib和libxml2.dll文件。将 libiconv.la 复制到 新建的 lib 目录,并将其改名为 iconv.lib。路径:libiconv-1.9.2-1-bin.zip\lib\。将如下的 iconv.h 复制到新建的 include 目录。

SHELLCODE_8BIT的博客 3886

Oracle索引和分区索引

一.索引 1.索引的概念 索引是一种可选的与表相关的数据库对象。数据库中引入索引的目的是为了提高对表中数据的查询速度。ORACLE并不是机械地为所有查询都使用索引,而是根据用户的具体使用情况,决定是否使用索引搜索数据。 2.索引类型 1 B树索引:又称平衡树索引,按照平衡树算法来组织的索引的,适合索引值取值范围广泛、重复率低的应用。2 位图索引:按位图结构组织的索引,适合索引取值范围小、重复率高...

CX的博客 2755

【DaVinci Developer专题】-23-IDT高阶应用:结构体类型的数组

共8页 目录 1 创建一个Record IDT 2 创建一个Array IDT 3 创建一个S/R Port Interface 4 创建一个Constant 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录--> <--返回「Autosar从入门到精通-实战篇」专栏主页--> 关键字: 缩略语/术语 含义 DEV DaVinci Developer .

「汽车电子助手」的博客 1670

Oracle中索引的原理

索引的概念 索引是一种数据库结构,能够就数据库中的某列提供快速查询,而不用检索整个表格(官方的不行)。 在 Oracle 数据库中,存储的每一行数据都有一个 rowID 来标识。当 Oracle 中存储着大量的数据时,意味着有大量的 rowID 。 当对 Oracle 表执行指定条件的查询时,常规的方法是将所有的记录取出来,然后再把每一条记录与查询条件作对比,最后返回满足条件的记录。这样操作不仅耗费时间并耗费资源。 此时想要快速定位指定的 rowID ,就需要使用索引对象。建立索引时,oracle会首先

hero_is_me的博客 4114

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

oracle 索引

如果数据都存储在同一个数据库块上,并且将HASH索引作为WHERE子句中的确切匹配,Oracle就可以通过执行一个HASH函数和I/O来访问数据,而通过使用一个二元高度为4的B树索引来访问数据,则需要在检索数据时使用4个I/O。)这种情况默认索引分布过于密集,不能利用好服务器的并行,但是反向之后变成10001,20001,33001,50001,61001就有了一个很好的分布,能高效的利用好并行运算。因为这些索引是低基数的B树索引,所以非常小,可以经常检索表中超过半数的行,并且仍使用位图索引。

qq_22201881的博客 2570

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

oracle 索引修复 Oracle索引重建

当数据库出现坏块而坏块所涉及对象为索引时,我们一般进行修复索引的方法是重建索引。 相对其它坏块,索引坏块修复起来最容易的。不过在修复前,我们需要确认这个坏块确实来自于某索引。 因此,这里我们会介绍一些块定位方法: 1. 如何在ORA-1578/RMAN/DBVERIFY的日志记录中确认讹误受损对象 首先需要确认绝对文件号(Absolute File Number: AFN)和块号(Blo...

ORACLE数据库数据恢复、性能优化、故障诊断来问问MACLEAN 9117

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

oracle中各种索引的总结

索引在ORACLE SQL-TUNNING中起着重要作用,索引分为B-TREE索引,BITMAP索引两大类,但是特别需要强调的就是索引组织表,clustering这两种最特别的索引!其中用的最多还是B-TREE索引。1.        B-TREE索引B-TREE索引是我们平时用的最多,B-TREE顾名思义就是类似树结构,我想学过计算机的同学都应该理解。每个叶子节点存储的格式为:键

CYHJRX的专栏 1556

oracle表重命名 索引,Oracle索引

Oracle索引Oracle索引(index)最大的作用是用来优化数据库查询的效率,提升数据库的查询性能。就好比书的目录一样,可以通过目录来直接定位所需内容存在的页数,大大提高检索效率。Oracle数据库中如果某列出现在查询的条件中,而该列的数据是无序的,查询时只能从第一行开始一行一行的匹配。创建索引就是对某些特定列中的数据进行排序或归类,生成独立的索引表。在某列上创建索引后,如果该列出现在查询条...

weixin_35625397的博客 3532

Oracle强制索引

oracle hint 强制索引(转) oracle 1.建议建立一个以paytime,id,cost的复合索引。光是在paytime上建立索引会产生很多随机读。 2.就算建立了索引,如果你查询的数据量很大的话,也不一定会用索引,有时候全表扫描速度比索引扫描要快!(官方文档上好像说的是大概10%,就是如果你查询的数据占到总数据的10%,全表扫描比索引快)。 3.建复合索引语句如下(建议去看看官...

勇敢牛牛 1万+

oracle中怎么查看索引,查看oracle中表的索引

oracle中表的索引信息存在user_indexes 和user_ind_columns 两张表里面,其中,user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息,user_ind_columns统视图存放的是索引名称,对应的表和列等sql示例:基本查询:select * from user_indexes;select * from user_ind_colum...

weixin_39626927的博客 9404

oracle怎么么创建索引,Oracle 创建索引,oracle索引怎么创建

Oracle 创建索引,oracle索引怎么创建索引是数据库服务器用来加快检索的速度,再通过加了索引的列进行检索时候,数据库会自动使用索引,使用索引所在的列值进行快速检索,快速定位到真实的数据内容。哪些场合使用索引?1.频繁使用where字句或连接条件2.表比较大,数量多3.列的取值范围广4.查询结果占比比较小索引创建1.自动创建索引:在创建主键约束,唯一键约束,主键约束时会自动创建索引2.手动创...

weixin_28867991的博客 4442

oracle为表增加索引,【增加Oracle中表的索引】

1)概念: Oracle中的索引是基于表或集群的数据对象. 它具有类似于表的独立段存储结构,并且需要在表空间中分配存储空间.2)功能: 可以提高查找表中数据的速度.1)B树索引(测试站点): 它是Oracle中使用最广泛的索引和默认索引类型. B树是指平衡树(Balanced Tree),它使用平衡算法来管理索引.适用于B树索引:2)位图索引: 当要索引的数据具有大量重复值时,如果在其上建立了B...

weixin_39633054的博客 4938

oracle bitmap btree 索引,oracle之bitmap索引

oracle常见的索引是BTree索引和Bitmap索引。BTree索引特点:默认索引适合大量增删改查不能用or操作符适合高基数的列(即唯一值多)创建sql:create index lie_idx1 on table(liename);Bitmap索引特点:做update代价非常高非常适合or操作符基数少的列(即重复值多)创建sql:create bitmap index lie_bit_idx...

weixin_32179097的博客 1507

Oracle 索引详解

本文系统介绍了Oracle数据库索引的分类、创建和维护方法。索引主要分为逻辑分类(单列/复合、唯一/非唯一、函数/域索引)和物理分类(分区/非分区索引)。重点阐述了平衡树索引、倒序索引和位图索引的原理及应用场景,并提供了创建索引的最佳实践准则。同时详细讲解了索引的维护操作,包括重建索引(离线和在线模式)、合并索引碎片以及监控索引使用情况的方法。通过合理使用索引,可以显著提升查询性能,但也需注意索引对DML操作的影响。

2301_81096162的博客 1414

oracle 查看索引大小_ORACLE 索引扫描

一、 根据索引的类型与where限制条件的不同,有4种类型的Oracle索引扫描:(1) 索引唯一扫描(index unique scan)(2) 索引范围扫描(index range scan)(3) 索引全扫描(index full scan)(4) 索引快速扫描(index fast full scan)[@more@]1. 索引唯一扫描(index unique scan)通过唯一索引查找...

weixin_39835158的博客 1119

oracle中创建hash索引的语句,Oracle 索引 详解 - 索引介绍

一.索引介绍1.1索引的创建语法:CREATEUNIUQE|BITMAPINDEX.ON.(|ASC|DESC,|ASC|DESC,...)TABLESPACESTORAGELOGGING|NOLOGGINGCOMPUTESTATISTICSNOCOMPRESS|COMPRESSNOSORT|REVERSEPARTITION|GLOBALPA...

weixin_39829497的博客 1788
上一篇: oracle之rollup&cube&grouping
下一篇: oracle常用小知识点备忘录
夢_殤
博客等级 码龄15年 348粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值