返回顶部
首页 > 资讯 > 数据库 >oracle11g中虚拟列有什么用
  • 494
分享到

oracle11g中虚拟列有什么用

2024-04-02 19:04:59 494人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关oracle11g中虚拟列有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 由于之前的一个sql效率不高,

这篇文章将为大家详细讲解有关oracle11g中虚拟列有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

由于之前的一个sql效率不高,尝试了多种写法,虽然执行计划比较优,但是执行效率还是很低下(结果需要3s多),表本身数据量大概是320W左右,统计全表,其实业务需求本身理解起来并不复杂,就是对某张表的某一列进行判断,统计这一列在不同范围的数目。于是想起来此业务是可以使用虚拟列来计算这一列的值的。
虚拟列小释:虚拟列是oracle11g引入的新特性,它是根据当前表其他列计算出来的列值,此列数据不存储在数据文件中,它只是作为一个表达式存储在数据字典中,因此,此列不能进行DML操作,此外,虚拟列不能引用虚拟列。
在虚拟列可以进行如下操作:
1、可以在虚拟列上建立索引
2、可以在虚拟列上建立约束;
3、可以基于虚拟列进行分区操作。
表结构如下:
create table people (id varchar2(32),name varchar2(10),id_card varchar2(40),medisecu varchar2(50))
comment on column people.name is '姓名';
comment on column people.id_card is '身份证号';
comment on column people.medisecu is '所买保险品种';
插入测试数据后:
select * from people;
oracle11g中虚拟列有什么用
业务需求如下,统计买了单保险的有多少人,买了多保险的有多少人。因此我希望在此表单独有一列对此人所买保险是单保险还是多保险做一个判断。
此需求需要用到自定义函数,建立用户自定义函数:
create or replace function fn_medisecu (i_id in varchar2,i_medisecu in varchar2 default null)
return number deterministic --oracle要求对于用户自定义函数,必须声明函数的确定性(deterministic)
as
v_count pls_integer:=0;---pls_integer这个数据类型值得关注,效率高于number,pls_integer和number数值类型介绍,请移步Http://blog.itpub.net/30485601/viewspace-2151857/
begin
select count(people_id)
into v_count
from diagninfo  
where people_id=i_id and en_disease_code is not null and disease_jzlx in(1,2,3,4);--这个不用关注,是此人需要满足的条件
if i_medisecu is not null and v_count<>0
  then
    if i_medisecu='10'
      then return 0;
     else
       if length(replace(i_medisecu,',',''))=1--单保险
         then return 1;
       elsif length(replace(i_medisecu,',',''))>1--多保险
         then return 2;
       end if;
    end if;
else
  return 0;
  end if;
end;
建立虚拟列:
alter table people add vir_medisecu number generated always as (fn_medisecu(id,medisecu)) virtual;--其中generated和always 为可选关键字,写不写都可以,区别不大,如果忽略虚拟列的数据类型,oracle会根据as后的表达式结果的最终数据类型确定此虚拟列的数据类型。
在虚拟列上建立索引,同时收集统计信息:
  create index people_vir_medisecu on people(vir_medisecu);
begin
  dbms_stats.gather_table_stats(ownname => 'QJ',tabname => 'PEOPLE');
end;
begin
  dbms_stats.gather_index_stats(ownname => 'QJ',indname => 'PEOPLE_VIR_MEDISECU');
end;
再次对单保险和多保险进行统计,结果缩减到了0.2s。
虚拟列要注意的问题:
1、虚拟列的使用会带来其他问题,包含了虚拟列的表在进行insert操作的时候不能省略column列表,因此,必须和开发人员确定所有对于虚拟列表的插入完整的写了column,不然程序会报错;
2、无法使用create table as select 创建一个包含虚拟列的表,只能建表之后重新添加虚拟列。

关于“oracle11g中虚拟列有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: oracle11g中虚拟列有什么用

本文链接: https://lsjlt.com/news/71937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • oracle11g中虚拟列有什么用
    这篇文章将为大家详细讲解有关oracle11g中虚拟列有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 由于之前的一个sql效率不高,...
    99+
    2024-04-02
  • 云虚拟机有什么用
    云虚拟机的作用:1、用于搭建个人建设网站,学习某些方面的知识;2、用于搭建电子商务平台,实现网络交易;3、搭建中小型企业网站;4、云虚拟机空间特有的应用程序模板,能够快速搭建ASP/PHP应用平台;5、可以用于提供数据共享、数据下载服务。具...
    99+
    2024-04-02
  • Java虚拟机有什么用
    这篇文章主要介绍Java虚拟机有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 什么是Java虚拟机Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如...
    99+
    2023-06-03
  • apache中配置虚拟主机有什么用
    在Apache中配置虚拟主机可以实现以下功能:1. 主机共享:可以在一台服务器上托管多个不同域名的网站,通过配置虚拟主机,每个域名可...
    99+
    2023-08-23
    apache
  • nginx虚拟主机有什么用
    Nginx虚拟主机(Virtual Host)是一种配置,使得在一台服务器上运行多个网站成为可能。因此,虚拟主机的主要用途是:1. ...
    99+
    2023-08-29
    nginx虚拟主机 虚拟主机
  • tomcat虚拟主机有什么用
    tomcat虚拟主机的作用:tomcat虚拟主机占用系统资源小,扩展性好,支持负载均衡与邮件服务等开发应用系统常用的功能,是一台高性...
    99+
    2023-02-15
    tomcat虚拟主机 虚拟主机
  • php虚拟主机有什么用
    PHP虚拟主机是一种在单个服务器上运行多个独立的网站的技术。它的作用主要体现在以下几个方面:1. 节省成本:虚拟主机可以将多个网站部...
    99+
    2023-08-22
    虚拟主机 php
  • pycharm虚拟环境有什么用
    pycharm 虚拟环境用途:隔离项目依赖项、测试新软件包、管理 python 版本、协作开发、可移植性。具体使用步骤:创建新项目或打开现有项目;打开“设置”对话框;转到“项目”>...
    99+
    2024-04-24
    python pycharm
  • Python虚拟机中的Code obejct有什么作用
    这篇文章主要介绍了Python虚拟机中的Code obejct有什么作用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python虚拟机中的Code obejct有什么作用文章都会有所收获,...
    99+
    2023-07-05
  • 共享虚拟主机有什么用
    共享虚拟主机的作用有:1.搭建网站,建站速度快;2.数据共享平台,提供数据共享、数据下载服务;3.数据库存储平台,提供数据存储功能;具体分析如下:搭建网站共享虚拟主机,适用于搭建各类中小型网站,建站速度快,管理方便。数据共享平台中小企业、专...
    99+
    2024-04-02
  • 虚拟化工具CoLinux有什么用
    这篇文章给大家分享的是有关虚拟化工具CoLinux有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CoLinux(Cooperative  Linux)的简称,是一个虚拟化工具,但是和VMware...
    99+
    2023-06-16
  • 免费虚拟主机有什么用
    免费虚拟主机可以用于搭建个人网站、博客、论坛等小型网站。虚拟主机提供了网站所需的存储空间和带宽,使用户能够将自己的网站上线并让他人访...
    99+
    2023-09-12
    虚拟主机
  • 虚拟主机内存有什么用
    虚拟主机内存是指在虚拟主机上分配给特定网站或应用程序的可用内存空间。虚拟主机内存的作用主要有以下几个方面:1. 运行网站或应用程序:...
    99+
    2023-08-29
    虚拟主机
  • 虚拟主机流量有什么用
    虚拟主机流量是指在虚拟主机服务器上发送和接收的数据量。它具有以下用途:1. 网站访问统计:通过分析虚拟主机流量,可以了解网站的访问量...
    99+
    2023-08-31
    虚拟主机
  • 双线虚拟主机有什么用
    双线虚拟主机是指主机服务商提供的两条不同运营商线路的虚拟主机服务,其主要用途包括:1. 提高网站访问速度:双线虚拟主机可以让网站在两...
    99+
    2023-06-04
    双线虚拟主机 虚拟主机
  • linux有什么虚拟终端
    这篇文章主要介绍了linux有什么虚拟终端的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux有什么虚拟终端文章都会有所收获,下面我们一起来看看吧。linux虚拟终端有:1、Gnome-terminal,支...
    99+
    2023-07-02
  • 什么是mysql的虚拟列以及应用实例
    目录 简介虚拟列的分类虚拟列使用示例 简介 MySQL的虚拟列是一种新特性,可以在查询时直接使用虚拟列(代替视图) 存储虚拟列可以用作实例化缓存,以用于动态计算成本高昂的复杂条件。虚拟列可...
    99+
    2023-09-20
    mysql 数据库 java
  • Java虚拟机栈jvm栈有什么用
    小编给大家分享一下Java虚拟机栈jvm栈有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. 定义栈:线程运行时需要的内存空间,一个栈存在多个栈帧。栈具有先入后出,后入先出的特点。栈帧:每个方法运行时需要的内存(局...
    99+
    2023-06-25
  • 国外云虚拟主机有什么用
    国外云虚拟主机的用途有:1、搭建数据共享平台,国外云虚拟主机搭建网站速度快,且成本低;2、搭建数据库存储平台,国外云虚拟主机能按需购...
    99+
    2023-02-09
    国外云虚拟主机 云虚拟主机
  • 虚拟主机子目录有什么用
    虚拟主机子目录有什么用?虚拟主机子目录是指在一个虚拟主机中创建的目录或文件夹,其主要作用是在同一个服务器上托管多个网站时,将不同的网站彼此隔离。 虚拟主机是指在一台物理服务器上划分出多个虚拟的服务器环境,每个虚拟主机都有自己独立的域名、独...
    99+
    2024-01-23
    虚拟主机子目录 虚拟主机子目录有什么用 虚拟主机知识
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作