6 孟德三笑

尚未进行身份认证

我要认证

原谅我这一生不羁放纵爱自由

等级
TA的排名 5w+

Oracle优化之直方图

当数据列基数较低的时候 ,该列数据分布就可能不均衡。这就导致在查询该列的时候,最优的结果可能走索引,也可能走全表扫描。但是如果我们没有对该列收集直方图统计信息,那么基于成本的优化器(CBO)就会认为该列数据分布是均衡的,导致没有按最优的执行计划来查询。这是因为执行计划里的rows是假的,是根据统计信息和一些数学公式计算出来的。而收集直方图信息,就是帮助执行计划计算 得到更加精准的rows。...

2020-10-04 15:59:19

oracle优化之选择性

基数与表的总行数的比值就是选择性当我们学习了基数后,可以得出一个大概的结论:基数比较小时,查询不走索引,基数比较大时,查询走索引。但是这样太笼统了,什么情况下基数算大,什么情况下算小呢。比如一个字段的基数是10000,应该比较大了吧,但是这张表本身有100亿条数据。相形之下,就不那么大了。所以单独看列的基数就没有什么意义了,这就引入了列的选择性。当一个列的选择性大于20%时,说明这个列的数据分布就比较均衡了。这时如果在where子句中对这个字段做条件筛选,就应该创建索引。当然,如果表的数据量比较小的

2020-09-23 14:40:48

oracle优化之基数

基数指的是一个字段中不重复值的个数。比如性别列,它的值有男和女两种情况,所以它的基数是2以scott账户的emp表为例,执行以下sqlselect count(1) as num,count(distinct job) as jobnum,count(distinct deptno) from emp由结果可以看出,emp表的行数为14,job列的基数为5,deptno列的基数为3当字段的基数越大时,该列数据的分布可能就越均衡。字段的基数越小时,该列数据的分布可能就越不均衡。举个

2020-09-22 17:19:04

FineReport修改浏览器标题logo

fine-decision-10.0.jar文件以解压文件的方式打开找到登录页路径:com/fr/web/controller/decision/entrance/resources/login.html解压后添加代码<link rel="icon" href="webroot/favicon.ico" />找到首页路径:com/fr/web/controller/decision/entrance/resources/index.html解压后添加代码<lin..

2020-09-10 09:34:45

SqlServer求连续分组

with temp as (select 39 as a, 0.5 as b,'2020-08-25 09:00:00' as cunion allselect 39 as a, 0.4 as b,'2020-08-25 09:01:00' as cunion allselect 39 as a, 0.3 as b,'2020-08-25 09:02:00' as cunion allselect 39 as a, 78 as b,'2020-08-25 09:03:00' as cun.

2020-08-25 09:50:51

SqlServer查看数据等待资源

SELECT der.[session_id],der.[blocking_session_id], sp.lastwaittype,sp.hostname,sp.program_name,sp.loginame, der.[start_time] AS '开始时间', der.[status] AS '状态', dest.[text] AS 'sql语句', DB_NAME(der.[database_id]) AS '数据库名', der.[wait_type] AS '等.

2020-08-24 10:24:07

Selenium+Headless Firefox爬取JavaScript页面信息

Selenium+Headless Firefox前提条件:- 本地安装Firefox浏览器- 本地需要geckodriver驱动器文件(下载解压后直接放到python/scripts目录下)from selenium import webdriver# 创建Firefox参数对象opt = webdriver.FirefoxOptions()# 把Firefox设置成无界面模式,不论windows还是linux都可以,自动适配对应参数opt.add_argument('-he..

2020-08-02 23:17:18

FineReport利用js获取控件方法总结

一、分页预览1.参数面板中获取参数面板控件:this.options.form.getWidgetByName("a");2.表格内获取参数面板控件:_g().parameterEl.getWidgetByName("a");二、填报预览1.参数面板中获取参数面板控件:this.options.form.getWidgetByName("a");2.表格内获取...

2020-03-07 09:41:43

一条普通的sql查询探索Oracle物理体系结构

Oracle体系结构—物理体系结构首先发起一条sql指令select object_name from t where object_id=29第一步该sql指令先进入1区PGA,该指令在这里主要完成了两件事情:1)连接信息的保存2)权限的保存只要session不断开连接,下次系统不用再去硬盘中读取数据,而直接从PGA内存中获取。此外,该sql还会立即匹配成一条唯...

2019-03-02 22:22:44

Oracle体系结构—物理体系结构

Oracle由实例和数据库组成,其物理体系结构图如下:一区:PGA (Program Global Area)PGA是一块开辟出来的私有不共享的内存区,用户对数据库发起的无论查询还是更新的任何操作,都是在PGA先预处理,然后接下来才进入实例区域,由SGA和系列后台进程共同完成用户发起的请求。PGA的预处理作用:1)保存用户的连接信息,如会话属性、绑定变量等2)保存...

2019-02-19 15:49:22

存储过程创建表

判断当前数据库是否有表CAP_LOG_变量,如果有,删除后新建,如果没有直接新建create or replace procedure pro_createtable(filename varchar2)authid current_user is --授予调用者在存储过程中拥有其角色权限num number;begin select count(1) into num f...

2018-10-11 16:57:49

简单的使用游标返回Oracle存储过程结果集示例

示例基于student表:创建存储过程:create or replace procedure read_stu(t out SYS_REFCURSOR)isbeginopen t for select sid,sname from student;end;使用存储过程:declare t sys_refcursor;s student%rowtype;b...

2018-09-26 17:39:59

Oracle速查手册

create user [用户名] identified by [密码];--创建用户 --如何修改用户密码: alter user [用户名] identified by [新密码]2.grant connect to [用户名]--赋予用户登录权限 grant create session to [用户名]3.grant resource to [用户名] --...

2018-09-26 15:07:40

使用java获取kettle上个步骤的数据并处理输出到下步骤

import java.io.File;import java.io.IOException; //kettle中已定义好的行处理方法,每行记录都会运行一次public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException{ //(1)获取到上一个步骤的输入行 O...

2018-03-04 11:05:57

sql server 生成连续日期

在sqlserver里,可以利用系统表master..spt_values里面存储的连续数字0到2047,结合dateadd()函数生成连续的日期。SELECT    CONVERT (VARCHAR (10),dateadd(d, number, GETDATE()),23) AS rqFROM    master..spt_values WHERE    type =

2018-02-05 11:37:05

kettle设置变量不起作用

在kettle转换中设置了变量,但是在后续的步骤中引用该变量不起作用原因是因为转换中的所有步骤都是并行运行的,没有特定的执行顺序。也就是说,设置的变量在当前转换里是不起作用的。解决方法是在job里将设置变量作为一个前置的转换,然后将引用该变量的转换作为后置转换。

2018-01-30 21:13:47

Oracle求连续区间内的最大最小值

现在有一组数据记录了NBA球队每年的夺冠队伍,如下:要求求出连续夺冠的队伍和连续年月,效果如下:首先要判断一个队是否连续夺冠,我们可以通过lag函数来获取字段的上一个值,就比较容易判断了。然后给判断赋值,连续的为0,不连续的 为1。然后使用累加为后续的分组作准备:最后就是很基础的分组求最大最小值过程了,就不再赘述了。最终sql如下:s

2017-10-31 20:57:22

kettle处理mysql的tinyint字段类型

在使用kettle转换mysql的tinyint字段类型时,会将tinyint类型当成Boolean类型来处理,如图所示:解决方法:通过拼接字符串,如select type+'' as type .

2017-09-18 15:11:47

Oracle不引用对象名访问对象的表

在Oracle中,一个用户想访问其他用户的表时,首先要获得访问的权限,然后可以通过用户.表名的方式访问该表。比如我有一个新创建的用户,axing。若想访问scott的数据表,必须先授权,在scott用户下执行以下语句:grant select any table to axing;然后可以在axing用户下查询:select * from scott.emp每次访问的

2017-06-19 16:32:59

Oracle对空值的排序处理

在对Oracle的结果集进行排序的时候,如果排序的列存在空值的情况,那么怎么在不改变原来的顺序(升序或降序)的情况下,如何控制空值最先显示或是最后显示呢?Oracle提供了一个很好的方法。select ename, commfrom emporder by comm以上语句的查询结果是:如果想把空值放在最前面,可以加上nulls first:selec

2017-06-15 09:43:29

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。