• oracle初步学习笔记


    B站黑马程序员视频:https://www.bilibili.com/video/BV1KJ411h7NH

    连接oracle数据库

    1、直接本地连接

    # 连接已有表空间
    sqlplus wateruser/itcast@orcl
    
    • 1
    • 2

    2、IP连接oracle

    在sqlplus.exe所在目录下,执行如下命令:

    sqlplus 表空间/用户名@//地址:1521/orcl(实例名/全局数据库名,每个oracle数据库可以创建多个实例)

    sqlplus wateruser/itcast@//192.168.80.10:1521/orcl
    
    • 1

    ORACLE中的索引

    什么是索引?

    索引是一种排好序的数据结构。索引是一种可以大大加快查询效率的数据结构。

    普通索引

    索引是为查询服务的,为经常用来查询的那一个字段建立索引。

    1、创建索引:

    create index index_owners_name on t_owners(name);
    
    • 1

    主键字段,会自动建立索引。

    根据rowid查,比根据索引查询要快,因为rowid直接就是物理地址。

    2、使用索引:

    select  * from t_owners where name = '张哲';
    
    • 1

    3、性能测试 创建一个表,向表中插入100w条记录

    create table T_INDEXtEST (ID NUMBER, NAME VARCHAR2(30));
    
    begin
      for x in 1..1000000
        loop
          insert into T_INDEXTest values(x, 'AA'||x);
        end loop;
      commit;
    end;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4、不同的条件查询效果

    -- 创建索引
    create index index_test on T_INDEXTEST(name);
    
    select * from T_INDEXTEST where id = 765431; -- 慢
    select * from T_INDEXTEST where name = 'AA765431'; --快
    select ROWID, t.* from T_INDEXTEST t where name = 'AA765431'; -- 查询ROWID
    select * from t_indextest where rowid = 'AAAM3jAAGAAAAlKAA5'; -- 更快一些
    -- 根据索引查找,也要找到ROWID,ROWID是物理地址,oracle会为每一条记录创建一个ROWID
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    唯一索引

    -- 创建唯一索引
    create unique index index_owners_meter on t_Owners(watermeter);
    
    • 1
    • 2

    复合索引

    -- 经常使用如下条件查询:
    select * from t_owners where addressid = 1 and housenumber = '1-3';
    -- 创建复合索引
    create index index_owners_ah on t_owners(addressid, housenumber);
    
    • 1
    • 2
    • 3
    • 4

    复合索引字段的建立顺序,和查询顺序最好一直,不然效率不高?

    反向键索引

    对于一组排列连续的数据,它建立的索引是一种“歪脖子树”的形状,也可以说退化成链表,树的深度大大加深,降低查询效率。这时候建立反向键(把数据转换成2进制,然后反着读二进制数据,生成另外一个数据,得到的数据会比较随机),可以将树的深度降低。

    一个编码对应一张图片,首先拿到对应关系,上传一张图片,替换一个编码对应图片。

    1660612955682

    create index index_name on t_owners(housenumber) reverse;
    
    • 1

    位图索引

    和以上的索引都不同,上面的索引都是B Tree * 索引,B*树的数据结果。

    位图索引不是树的数据结构,它是一个图,每一个条数据,就对应于图上的一个点

    1660615525692

    图中的查询,会将男,这个位图索引中的所有数据(ROWID),直接全部获取到,查询速度比B*树要快。

    适用于:

    • 适合建立在低级数列上:也就是当前字段的值是有限的,比如性别(男女),颜色(红黄蓝。。有限),民族(56个)。

    优点:

    • 字段的值越少,效率就越高,越节省空间。因为位图索引要为创建该索引的字段中的每一个值,都创建一张图,来存储记录对应的ROWID

    • 效率比B*树数据结构的索引高,不用一层层的找,直接获取数据

    缺点:

    • 不能做范围查询,只能用做等值查询,因为数据库并不知道,建立的每张图之间的关系

      1660616516731

    做范围查询,不会走索引,会逐行扫描。

    create bitmap index index_name on t_owners(filed1, filed1...);
    
    • 1

    问题1:ORA-27101: shared memory realm does not exist

    出现该问题原因可能是:未正确关闭数据库。(未关闭数据库情况下,直接关机)。

    在cmd下执行:

    sqlplus /nolog # 无序用户名密码登录
    connect / as sysdba 
    startup force
    
    • 1
    • 2
    • 3
  • 相关阅读:
    并发编程——2.基础概念及其它相关的概述
    Java 线程池手动创建示例及自我理解的解读 ThreadFactory手动创建示例
    【Python机器学习】零基础掌握EllipticEnvelope协方差估计
    conda 复制系统环境
    基于springboot的校园二手网站
    Yarn 和 npm 的区别
    Parsing error: The keyword ‘interface‘ is reserved配置优化
    微服务系统设计——接口文档管理设计
    前端vue论坛项目(七)------构建 UserProfileView 用户页面
    百度Echarts实现饼图,较官网示例更多项显示
  • 原文地址:https://blog.csdn.net/u014685547/article/details/126363204