oracle 索引字典,oracle数据字典、索引、序列

*************************数据字典*******************************

普通的表 是用来存放 应用程序 需要的数据的

student表 是存放学生信息的

category 表 是存放 商品种类信息的

oracle 也是一个应用程序, oracle这个系统级应用程序本身也需要存放一些数据,这些

数据存到哪张表中呢? 存到一个特殊的表中,这个特殊的表叫做数据字典表,它是为oracle

本身服务的.

演示代码:

--1. 查看当前用户下有哪些表

select TABLE_NAME from user_tables

--2. 查看当前用户下有哪些视图

select VIEW_NAME from user_views

--3. 查看当前用户下有哪些约束

select CONSTRAINT_NAME from user_constraints

select * from user_constraints where constraint_name='SYS_C0016608'

--4.查询dept表有哪些字段

select * from user_tab_columns where table_name='DEPT'

--5.查询到底有哪些数据字典表

select TABLE_NAME from dictionary

--6.查询和用户相关的数据字典表有哪些

select TABLE_NAME from dictionary where TABLE_NAME like 'USER_%'

*********************SQL语句优化最基本的技巧************************

使用字段名 代替 *

因为如果程序员写 select * from emp

oracle执行的时候 会先去查 user_tab_columns这张字典表 把*转换成所有的字段名

查询数据字典需要时间 所以最好使用字段来代替

一.什么是索引

用来提高查询速度的数据库对象

可以理解为 查字典时 的目录

二.为什么用索引

作用: 提高查询速度

索引(类似查字典,按拼音查,按部首查) 张642 页 第5个字

没有索引时

要查的次数 641页*10个字 + 5=6415

有了目录: z 26+3 +5=34

zha

zhan

zhang 642

三.how

创建索引的原则

1. where 条件

group by 条件

order by

在经常查询的字段上加索引...

2. 连接条件

3. 在5m以下的表 查询返回的结果集在5%左右数据时 使用索引

如果是一个超大的表 product表 即使加了索引 也没有太大的作用

如果是一张超大的表 最好的优化策略 大表 划分成若干个小表

手机product 笔记本product ...

创建索引的语法:

create index 索引名 on 表名(字段)

***也可以建立组合索引,查询组合的时候效率更高

create index 索引名 on 表名(字段1,字段2)

select * from 表名 where 字段1=... and 字段2= ..

***************************初始化数据**********************************

select * from category

insert into category values(1,'手机','通讯工具')

begin

for i in 1..500000 loop

insert into product values(i,'商品名称'||i,'商品描述'||i,1);

end loop;

commit;

end;

************************执行计划(解释计划)***********************************

1.没有加索引的时候 默认是全表扫描

Table Access Full

ROWS 基数 Card 预计返回的结果集个数

Bytes 返回的结果集占用的字节数

Cost 耗费 2(0) 占用cpu的百分比

一般Cost越小表示执行计划越优, 执行速度越快,只是一个参考值 ,不一定

Time SQL语句 预计消耗的时间

************************索引的优缺点***********************************

优点: 提高查询速度

缺点:

1. 如果在一个表中频繁做 插入或删除操作 使用索引反而会降低 SQL语句的执行速度

因为插入、删除数据时 不仅要插入数据 而且要维护索引

2. 索引是占用空间的

************************索引的分类***********************************

第一种分法

1. 唯一性索引

主键和 unique 约束的字段 系统会自动为这些字段创建唯一性索引

2. 非唯一性索引

用户手工创建的索引都属于 非唯一性索引

第二种分法

1. 聚集性索引

物理位置上真正排序了 索引顺序和物理顺序是一致的

拼音

2. 非聚集性索引

物理位置上并没有排序 只是建立了一个指针...

部首

********************************oracle中的索引*******************

1. B树索引

适合高基数字段的查询(字段值重复比较少或没有重复)

2. 降序索引

是一种特殊的B树索引

select ename,hiredate from emp

where hiredate between to_date('1981-01-01','yyyy-mm-dd') and to_date('1981-12-31','yyyy-mm-dd')

order by hiredate desc

3. 函数索引

需求: 查询员工名称为SMITH的员工信息

create index index_emp_ename on emp(lower(ename))

select * from emp where lower(ename)='smith'、

降序索引和函数索引都属于B树索引

4. 位图索引

在查询 低基数 字段 上 使用位图索引 可以提高查询性能

低基数(字段值重复比较多) 例如 emp表的 deptno字段

需求: 查询部门编号为10 的员工的信息

部门编号这个字段 重复比较多

只有3个基数 deptno=10、deptno=20、deptno=30

银弹 1987 xxx 发表了篇软件工程的论文

软件工程中没有银弹的概念 10年内没有一种方法或技术 能提高软件产品的生产力提高10倍以上

同样 索引也不是提高性能的百分百绝对的方法...提高性能的最好的方式是提升硬件

一. 什么是序列

oracle 用来产生主键的一种方式

第一次值是1,每次自增1...依次类推

二.how

每一张表都应该有一个序列,该序列专门为这张表创建主键

create sequence seq_表名

例如

create sequence seq_article;

如何使用

insert into article values(seq_article.nextval,'标题1','标题2')

insert into article values(seq_article.nextval,'标题2','标题2')

查询序列当前值

select article.currval from dual;

**************************解决oracle序列从2开始的问题*************************

create sequence seq_article minvalue 0 start with 0 increment by 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从内核文件系统看文件读写过程

阅读目录 系统调用虚拟文件系统I/O 缓冲区Page CacheAddress Space文件读写基本流程 回到顶部系统调用 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境,但是计算机系统的各种硬件资源是有限的,因此为了保证每一个进程都能安全的…

打印沙漏

7-1打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相…

oracle数据库读取工具,用Oracle导入导出工具实现Oracle数据库移植

用Oracle导入导出工具实现Oracle数据库移植.很不错的方法,建议使用![more]用Oracle导入导出工具实现Oracle数据库移植Oracle数据库作为目前市场的主流数据库之一,许多应用都在其上进行开发,由于Oracle数据库更新换代的原因和不同的应用程序提供商&#x…

遥感影像语义理解

面向高分辨率遥感影像场景语义理解的概率主题模型研究:http://www.lmars.whu.edu.cn/index.php/xwzx/2320.html 基于自适应深度稀疏语义建模的高分辨率遥感影像场景分类:链接 为了挖掘高分辨率遥感场景更具区分性的语义信息,提出了一种将稀疏…

性能优化CPU、内存、磁盘I/O、网络性能相关命令

系统优化是一项复杂、繁琐、长期的工作,优化前需要监测、采集、测试、评估,优化后也需要测试、采集、评估、监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也…

java word批注_编写Java批注

java word批注Java 批注的允许的属性类型刻意非常严格,但是允许的类型也可以使用一些简洁的复合批注类型。 考虑教程站点中的示例注释: package annotation; interface ClassPreamble {String author();String[] reviewers(); }在这里,作者和…

oracle报错ora-00200,oracle 11gR2 rac 创建database报ORA-00200错误

oracle 11gR2 rac创建数据库时,报ORA-00200错误,提示权限不够NOTE: MARK has subscribedNOTE: Loaded library: SystemSUCCESS: diskgroup TESTDG was mountedErrors in file /u01/app/oracle/diag/rdbms/racdb/racdb1/trace/racdb1_ora_16324.trc:ORA-27091: unable to queue …

SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS…

oracle ojvm generic,Oracle OJVM安全补丁

什么是OJVM PSU?CPU: Critical Patch UpdateOracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患。PSU: Patch Set UpdatesOracle对于其产品每个季度发行一次的补丁包,包含了bug的修复。Oracle选取被用户下载数量多…

小规模流处理kata。 第1部分:线程池

我再次为我的公司在GeeCON 2016上举办了编程竞赛。 这次分配需要设计并根据以下要求选择实施系统: 一个系统每秒传送约一千个事件。 每个Event至少具有两个属性: clientId –我们期望一个客户端每秒最多可以处理几个事件 UUID –全球唯一 消耗一个事…

VC++ MSDN中的 _beginthreadex与_endthreadex 的使用例子

1._beginthread, _beginthreadex .用于创建线程[cpp] view plaincopy uintptr_t _beginthread( void( *start_address )( void * ), unsigned stack_size, void *arglist ); uintptr_t _beginthreadex( //推荐使用 void *security, //安全属性&#…

「澳洋主数据项目」主数据促企业变革

part 1 企业简介: 澳洋集团是一家跨地区、多元化的民营企业集团,总部位于全国百强县市前三甲的江苏省张家港市。集团成立于1998年7月,2007年经国家工商总局核准,升格为免冠行政区划的大型集团企业。集团现有37家下属子&#xff08…

linux bin目录误删,Linux下误删 /user/bin目录后的补救

当危险的动作发生, 误删 /user/bin目录后的补救以下是昨天晚上真实的误操作现场,模拟记录一下(这是测试环境,所以操作得很随意,有些执行动作很不规范)在上面编译一个软件Dboop,完事以后想把它做个软链到 /usr/binsudo …

使用JFlex生成词法分析器 1:安装配置

环境:Windows 10 STEP 1: 下载 JFlex 文件,我选择的是 jflex-1.7.0.zip。下载完成后解压到想安装的位置。 文件结构如下(假设解压目录为 C:\): C:\jflex-1.7.0\ --bin\ (start scri…

问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。

简单分析如下: 考虑vector每次内存扩充两倍的情况。 如果我们插入N个元素, 则会引发lgN次的内存扩充,而每次扩充引起的元素拷贝次数为 2^0, 2^1, 2^2, ..., 2^lgN. 把所有的拷贝次数相加得到 2^0 2^1 2^2 ... 2^lgN 2 * 2^lgN - 1 约为…

linux superblock 时间,Linux命令(八)

1、文件系统:windows的FAT,win2000以后的NTFS文件系统,Linux的正规文件系统为EXT2(Linux second extended file system,Ext2fs)传统方式中,一个分区只能格式化为一个分区。由于新技术的利用,一个分区可以格式化为多个文…

在Amazon Elastic Beanstalk上部署Spring Boot应用程序

在此博客中,我们将看到如何在Amazon ElasticBeanstalk上部署Spring Boot应用程序。 Amazon ElasticBeanstalk具有一个预配置的Java环境,可用于部署内部装有servlet容器的Spring Boot JAR。 对于我们的示例,此处将使用maven作为构建工具。 …

Linux上静态库和动态库的编译和使用

linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只有运行时找不到对应动…

Linux Socket API Connect 函数详解

在讲解套接字编程函数之前&#xff0c;有必要对socket编程的两个不可或缺的结构体进行说明。 第一个结构体式struct sockaddr.。这个结构为许多类型的套接字储存套接字地址信息&#xff1a; Sockaddr结构体介绍 #include<sys/socket.h> struct sockaddr { …

java 适用参数_Java功能的适用性

java 适用参数Java语言和标准库功能强大&#xff0c;但功能强大&#xff0c; 责任重大 。 一方面看到很多用户代码滥用或滥用稀有的Java功能&#xff0c;另一方面却完全忘记了大多数基本功能之后&#xff0c;我决定撰写此摘要。 这不是每个Java开发人员都应该探索&#xff0c;了…