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

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

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

oracle 索引字典,oracle数据字典、索引、序列相关推荐

  1. oracle通过数据字典查看序列,oracle数据字典,oracle字典

    oracle数据字典,oracle字典 一.数据字典 数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询.数据字典是oracle数据库系统的信息核心, ...

  2. oracle 10g 学习之视图、序列、索引、同义词(9)

    目标 通过本章学习,您将可以: l  描述视图 l  创建和修改视图的定义,删除视图 l  从视图中查询数据 l  通过视图插入, 修改和删除数据 l  使用"Top-N" 分析 ...

  3. 【数据库2】生成txt/xml文件,ftp,oracle安装/表操作/虚表/日期/序列/索引/视图/链路/同义词/高可用性,mysql/文件入库/清理/表结构设计/交换/收集

    文章目录 1.生成数据:crontab 2.ftp:ftp是tcp/ip协议族中一员,分客户端和服务端 2.1 安装:linux操作系统的用户也是ftp的用户,可以配置专用的ftp用户,专用的ftp用 ...

  4. Oracle数据库对象,同义词、序列、视图、索引

    数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提 ...

  5. oracle 伪列访问序列,Oracle数据库对象,同义词、序列、视图、索引

    数据库对象简介 Oracle 数据库对象又称模式对象 数据库对象是逻辑结构的集合,最基本的数据库对象是表 其他数据库对象包括: 同义词是现有对象的一个别名. 简化SQL语句 隐藏对象的名称和所有者 提 ...

  6. oracle 索引 序列,【Oracle】表、视图、序列、索引

    表(数据类型.约束).修改表结构 表的创建:create table 表名(字段名 数据类型 [约束]): 表的删除:drop table 表名: oracle表包括: 表名.字段.数据类型.[约束] ...

  7. Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习

    Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图.序列.索引等对象的导出,oracle完结,后续开启mysql的学习 2022找工作是学历.能力和运气的超强结合体,遇 ...

  8. oracle中字典指的是什么,ORACLE数据库中什么是数据字典及作用

    Oracle数据库一个最重要的部分就是数据字典,是只读类型的表的集合,提供数据库的信息.一个数据字典包括:    数据库对象所有的框架对象的定义[表.视图.索引.群集.同义词.序列.过程.函数.包.触 ...

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

    oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面, 其中, user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, ...

最新文章

  1. R语言format函数保留几位小数实战
  2. CentOS 7.4 安装 MySQL 5.6.40 完美教程
  3. [Winform]默认以管理员身份运行程序
  4. java quartz 触发_手动触发Quartz作业
  5. 域名怎么绑定ip_服务器怎么绑定域名?
  6. Jira-Clone与发邮件的使用
  7. php 使用curl模拟登录人人(校内)网
  8. python3创建类_python3 metaclass--创建类的过程分析
  9. GPIO应用开发方法【ZT】
  10. 设计灵感|26个字母的花样插画解读方式
  11. Ubuntu 14.10 下安装java反编译工具 jd-gui
  12. html中怎么远程控制小车,利用ESP8266远程控制小车 求大佬帮忙加段程序
  13. SouthidcEditor编辑器如何支持上传png图片
  14. php动态万年历模块,php如何实现万年历的开发(每日一课真是非常有效率)
  15. 永久改变Win10命令提示符(cmd)字体
  16. eyoucms留言模版验证码实现
  17. 【测试用例】文本框测试用例
  18. 015:Scrapy获取淘车网十七万二手车数据
  19. 汉堡大学计算机科学,汉堡大学
  20. linux命令 (管道命令)

热门文章

  1. java 单例 实现_java 实现单例的各种方式
  2. mysql密码高级_mysql高级操作
  3. pat 乙级 1010 一元多项式求导(C++)
  4. 什么是485中继器,RS-485中继器产品介绍
  5. [渝粤教育] 中国传媒大学 政治传播学 参考 资料
  6. [渝粤教育] 中国地质大学 Windows程序设计 复习题 (2)
  7. [渝粤教育] 西南科技大学 管理学原理 在线考试复习资料(5)
  8. CC1310在868MHz的电路设计
  9. MATLAB 将不同长度的一维数组存入二维数组
  10. ubuntu linux theme,如何在Ubuntu 20.04中启用全局暗黑主题