种类:
1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;
非唯一索引:
create index 索引名 on 表名(列名) tablespace 表空间名;
唯一索引:
建立主键或者唯一约束时会自动在对应的列上建立唯一索引;
2、索引列的个数:单列索引和复合索引;
3、按照索引列的物理组织方式。
索引的创建格式:
CREATE UNIUQE | BITMAP INDEX <schema><index_name> ON <schema><table_name> (<column_name> | <expression> ASC | DESC, <column_name> | <expression> ASC | DESC,) TABLESPACE <tablespace_name> STORAGE <storage_settings> LOGGING | NOLOGGING COMPUTE STATISTICS NOCOMPRESS | COMPRESS<nn> NOSORT | REVERSE PARTITION | GLOBAL PARTITION<partition_setting>使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况
使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。
在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:
一、B树索引:
最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:
可以保证无论用户要搜索哪个分支的叶子结点,都需要经过相同的索引层次,即都需要相同的I/O次数。
B树索引的创建示例:
create index ind_t on t1(id) ;
注1:索引的针对字段创建的,相同字段不能创建一个以上的索引;
注2:默认的索引是不唯一的,但是也可以加上unique,表示该索引的字段上没有重复值(定义unique约束时会自动创建);
注3:创建主键时,默认在主键上创建了B树索引,因此不能再在主键上创建索引。
二、位图索引:
有些字段中使用B树索引的效率仍然不高,例如性别的字段中,只有“男、女”两个值,则即便使用了B树索引,在进行检索时也将返回接近一半的记录。
所以当字段的基数很低时,需要使用位图索引。(“低”的标准是取值数量 < 行数1%)
位图索引的逻辑结构如上图所示:索引中不再记录rowid和键值,而是将每个值作为一列,用0和1表示该行是否等于该键值(0表示否;1表示是)。其中位图索引的行顺序与原表的行顺序一致,可以在查询数据的过程中对应计算出行的原始物理位置。
位图索引的创建示例:
create bitmap index ind_t on t1(type);
注:位图索引不可能是唯一索引,也不能进行键值压缩。
三、反向键索引:
考虑这个情况:某一字段的值是1-1000顺序排列,建立B树索引后依旧递增,到后来该B数索引不断在后面增加分支,会形成如下如的不对称树:
反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。
反向键索引的创建示例:
create index ind_t on t1(id) reverse;
注:键的反转由系统自行完成。对于用户是透明的。
四、基于函数的索引:
有的时候,需要进行如下查询:select from t1 where to_char(date,'yyyy')>'2007';
但是即便在date字段上建立了索引,还是不得不进行全表扫描。在这种情况下,可以使用基于函数的索引。其创建语法如下:
create index ind_t on t1(to_char(date,'yyyy'));
注:简单来说,基于函数的索引,就是将查询要用到的表达式作为索引项。
五、全局索引和局部索引:
这个索引貌似很复杂,其实很简单。总得来说一句话,就是无论怎么分区,都是为了方便管理。
具体索引和表的关系有三种:
1、局部分区索引:分区索引和分区表1对1
2、全局分区索引:分区索引和分区表N对N
3、全局非分区索引:非分区索引和分区表1对N
创建示例:
首先创建一个分区表
create table student
(
stuno number(5),
sname vrvhar2(10),
deptno number(5)
)
partition by hash (deptno)
(
partition part_01 tablespace A1,
partition part_02 tablespace A2
);
创建局部分区索引(1v1):
create index ind_t on student(stuno)
local(
partition part_01 tablespace A2,
partition part_02 tablespace A1
); --local后面可以不加
创建全局分区索引(NvN):
create index ind_t on student(stuno)
global partition by range(stuno)
(
partition p1 values less than(1000) tablespace A1,
partition p2 values less than(maxvalue) tablespace A2
); --只可以进行range分区
创建全局非分区索引(1vN)
create index ind_t on student(stuno) GLOBAL;
根据具体问题类型,进行步骤拆解/原因原理分析/内容拓展等。
具体步骤如下:/导致这种情况的原因主要是
设置以下环境变量:
INFORMIXDIR the location of your IDS installation
PATH add $INFORMIXDIR/bin
add $INFORMIXDIR/extend/<spatialDataBladeDir>/bin (see below)
安装Spatial DataBlade。安装指导可从 IDS 1110 信息中心获得(参考本文末尾的链接)。
下面的指令假设您已经在默认位置安装好了 Spatial DataBlade version 821: $INFORMIXDIR/extend/spatial821xC1,其中 ‘x’ 表示特定于平台的字母。对于 64 位 Linux x86,默认位置为 $INFORMIXDIR/extend/spatial821FC1。可根据您的环境对指令作出相应修改。
为空间数据创建 sbspace。注意:sbspace 名必须与 ONCONFIG 文件中的 SYSSBSPACENAME 值匹配。本例假设 sbspace 名为 syssbspace。
在与根dbspace相同的目录中创建名为 syssbspace 的空文件(ONCONFIG 文件中 ROOTPATH 的值指定根dbspace的名称和位置)。
将文件所有权改为informix:informix。
将文件权限改为mode 660。
以用户informix的身份,创建sbspace:
onspaces -c -S syssbspace -p <fullpath>/syssbspace -o 0 -s 100000
创建您的数据库。
dbaccess - -
create database spatialdb;
注册 Spatial DataBlade。
使用 blademgr 实用工具注册 Spatial DataBlade。Spatial DataBlade 依赖于 R-Tree DataBlade,后者由 IDS 自动附带。因此,必须同时向您的数据库注册这两个 DataBlade。
blademgr
register ifxrltree200 spatialdb
register spatial821FC1 spatialdb
list spatialdb
DataBlade modules registered in database spatialdb:
ifxrltree200 spatial821FC1
加载空间数据。
从City Limits 2007和Tsunami Inundation Line下载中提取文件,并分别保存在两个目录中,即citylim_2007和tsunami:
ls citylim_2007
citylim_2007dbf
citylim_2007prj
citylim_2007sbn
citylim_2007sbx
citylim_2007shp
citylim_2007shpxml
citylim_2007shx
ls tsunami
PRJdevelopmentpdf
tsunamidbf
tsunamihtml
tsunamipdf
tsunamiprj
tsunamishp
tsunamishpxml
tsunamishx
假设A1单元格是要计算税金的工资数,B1单元格为税率,C1单元格为扣除数,D1单元格为应交税金税率的公式为:
(IF(AND(A1>0,A1<=500),5%,IF(AND(A1>500,A1<=2000),10%,IF(AND(A1>2000,A1<=5000),15%,IF(AND(A1>5000,A1<=20000),20%,IF(AND(A1>20000,A1<=40000),25%。
IF(AND(A1>40000,A1<=60000),30%,IF(AND(A1>60000,A1<=80000),35%,0)))))))+IF(AND(A1>80000,A1<=100000),40%,IF(A1>100000,45%,0))) 。
速算扣除数的公式为:
=IF(B1=5%,0,IF(B1=10%,25,IF(B1=15%,125,IF(B1=20%,375,IF(B1=25%,1375,IF(B1=30%,3375,IF(B1=35%,6375,IF(B1=40%,10375,0))))))))+IF(B1=45%,15375,0) 。
应交税金的公式:=round(A1B1-C1,2)。
扩展资料:
EXCEL学习函数最快的方法:
理解:因为函数是英文,所以英文转化为汉语,汉语转化为真实含义,都是一个过程。理解之后,使用起来就会得心应手。
运用:许多函数忘记了,是因为基本用不上,把好用的函数用起来,后面就会越用越上瘾。
目标:是偷懒,偷懒的心,其实是前期设置好,后期自动化。
心法:是解决问题的总思路。这个学会了,所有的方法技巧,都可以随便就能拿过来。
1、理解函数,比如sum,是总结,概括, 归纳的意思。下一次计算合计数,直接输入=sum(),心随我动。再比如,column,是列的意思,这个函数是返回列的序号。
比如column(B4)=4,在批量生成公式时非常好用。怎么记忆?column,名词,纵队,列;圆柱;专栏。只要去百度一下他的含义,读一遍,记住这个单词,就能记住这个公式。
2、记忆函数:常用的函数并不多,一般来说,记忆几个基本函数,就可以解决90%的问题了,sum(合计),sumif(条件求和),vlookup(查找并返回同一行的其他值),offset(偏移函数),if(假如,则),count(计数)。
countif,index(索引函数),int(向下取整数),rand(随机函数),文本的组合,text,&,concatenate三个函数, 关于时间的函数,mouth,now等。给每一个函数做一个自己的解释。有不超过20个基本的函数,绝对够用了。
3、使用函数:函数不用,就会忘掉。
不会使用某个函数,就直接去看帮助实例,或者百度看案例。是最直接有效的方法。前面要用3个小时的问题,用这个函数技巧,10分钟就解决了、有学习的动力,就主动学习好用的函数,用多了,就记住了。
4、心法:要在EXCEL实现某个目标,就必须学会用多种思路解决,此路不通时,可以用其他方法解决。一个基本的思维方式是:表格——工具——函数。比如去重复数据,
(1),直接要求数据来源提供不重复的数据!
(2),利用2007版工具栏中去重复数据。或者数据——筛选——选择不重复记录,粘贴就可以了。
(3),利用函数查找和对比筛选。=IF(COUNTIF(A:A,A1),A1,"")。
所以最高心法就是,数据从源头到结果,前面的一步走弯了,后面就会走更多的弯路,才能回到正轨。所以从一开始就要求数据输入格式,统一,标准化,都为后面做好准备。
其次是基本功能的运用。再次是数据处理过程的自动化,前期把函数设置好,检查好,后期才会省时省力。
1、函数的语法,本身就需要用小括号的。如:
文本函数TEXT的语法:TEXT(数值,"格式")
例:A1输入196301,B1显示日期1963年01月:
B1=TEXT(A1,"0000年00月")
替换函数SUBSTITUTE的语法:SUBSTITUTE(需替换字符的文本或引用,旧文本,新文本,替换位次)
例:A1为 2005年度,但要改为2015年度:
B1=SUBSTITUTE(A1,"0","1",2)
换算函数CONVERT的语法:CONVERT(数值,原数值计量单位,转换后的计量单位)
例:A1输入2(表示2米),B1换成英寸:
B1=CONVERT(A1,"m","in")
条件平均函数AVERAGEIF的语法:AVERAGEIF(数据区域,条件,实际平均区域)
索引函数INDEX的语法:INDEX(要返回的区域或数组常量,区域行号,区域列号)
……
2、而一连串加减乘除也要根据需要设置先后缓急吧。如:
成本核算,里面就需要用到加减乘除四则运算(看下面抓图):
毛利(J3)可以=H3G3-E3G3就不用括号。但用=(H3-E3)G3使用了括号,列式就相对简洁了。
但如果数据复杂(见下面抓图),不用括号就很费事了:
像J8,用函数式就是=(H8-SUMIF(B$3:B8,B8,F$3:F8)/SUMIF(B$3:B8,B8,D$3:D8))G8,公式可上下填充。改为四则运算为=H8G8-(F3+F6)/(D3+D6)G8,但只能J列各个单元格单独使用。
像这样的四则运算要去掉括号,可想知道要多费事。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)