当前位置:首页 » 操作系统 » 数据库索引怎么建立

数据库索引怎么建立

发布时间: 2022-08-10 01:02:58

数据库索引怎么建立

right © 1999-2020, CSDN.NET, All Rights Reserved

程序员必备的浏览器插件
登录

越来越好ing
关注
数据库索引是什么,有什么用,怎么用 转载
2018-12-04 23:30:36
5点赞

越来越好ing

码龄2年

关注
下面是关于数据库索引的相关知识:

简单来说,数据库索引就是数据库的数据结构!进一步说则是该数据结构中存储了一张表中某一列的所有值,也就是说索引是基于数据表中的某一列创建的。总而言之:一个索引是由表中某一列上的数据组成,并且这些数据存储在某个数据结构中。

2.索引的作用。举个例子,假设有一张数据表Emplyee,该表有三列:

表中有几万条记录。现在要执行下面这条查询语句,查找出所有名字叫“Jesus”的员工的详细信息

3.如果没有数据库索引功能,数据库系统会逐行的遍历整张表,对于每一行都要检查其Employee_Name字段是否等于“Jesus”。因为我们要查找所有名字为“Jesus”的员工,所以当我们发现了一条名字是“Jesus”的记录后,并不能停止继续查找,因为可能有其他员工也叫“Jesus”。这就意味着,对于表中的几万条记录,数据库每一条都要检查。这就是所谓的“全表扫描”( full table scan)

4.而数据库索引功能索引的最大作用就是加快查询速度,它能从根本上减少需要扫表的记录/行的数量。

5.如何创建数据库索引。可以基于Employee表的两列创建索引即可:

拓展资料:

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更

㈡ 数据库索引有哪几种怎样建立索引

  • 种类:

1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引;

  • 非唯一索引:

create index 索引名 on 表名(列名) tablespace表空间名;

  • 唯一索引:

建立主键或者唯一约束时会自动在对应的列上建立唯一索引;

2、索引列的个数:单列索引和复合索引;

3、按照索引列的物理组织方式。

  • 索引的创建格式:

CREATEUNIUQE|BITMAPINDEX<schema>.<index_name>ON<schema>.<table_name>(<column_name>|<expression>ASC|DESC,<column_name>|<expression>ASC|DESC,...)TABLESPACE<tablespace_name>STORAGE<storage_settings>LOGGING||COMPRESS<nn>NOSORT|REVERSEPARTITION|GLOBALPARTITION<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%)

反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

反向键索引的创建示例:

createindex 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

创建示例:

首先创建一个分区表

createtable 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)

globalpartition by range(stuno)

(

partition p1 values less than(1000) tablespace A1,

partition p2 values less than(maxvalue) tablespace A2

);--只可以进行range分区

创建全局非分区索引(1vN)

createindex ind_t on student(stuno) GLOBAL;

㈢ 怎样在数据库文件中创建索引文件

1、打开需要创建索引文件的数据库表,打开菜单栏显示——表设计器。
2、选择你要的索引字段,点击索引选项卡,按照自己的需要选择一个升序或降序,这是把索引默认设置成普通索引。
3、在“表设计器”中选择“索引”选项卡,与“字段”选项卡并列着呢。在“类型”这里选自己需要的比如唯一索引,后选索引等。表达式
表示可以设置多字段的索引,但要注意它们的字段类型,如果不同,要进行转换设置。
4、创建完成,点击保存。关闭表设计器。OK!
5、索引文件的修改、删除都可以在表设计器里进行。很容易呢~~

㈣ 数据库索引有哪几种,怎样建立索引

数据库索引的种类:

1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引

非唯一索引:B树索引

create index 索引名 on 表名(列名) tablespace 表空间名;

唯一索引:建立主键或者唯一约束时会自动在对应的列上建立唯一索引

2、索引列的个数:单列索引和复合索引

3、按照索引列的物理组织方式

B树索引

create index 索引名 on 表名(列名) tablespace 表空间名;

位图索引

create bitmap index 索引名 on 表名(列名) tablespace 表空间名;

反向键索引

create index 索引名 on 表名(列名) reverse tablespace 表空间名;

函数索引

create index 索引名 on 表名(函数名(列名)) tablespace 表空间名;

删除索引

drop index 索引名

重建索引

alter index 索引名 rebuild


索引的创建格式:

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>

UNIQUE | BITMAP:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree索引。
<column_name> | <expression> ASC | DESC:可以对多列进行联合索引,当为expression时即“基于函数的索引”
TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)
STORAGE:可进一步设置表空间的存储参数
LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率)
COMPUTE STATISTICS:创建新索引时收集统计信息
NOCOMPRESS | COMPRESS<nn>:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值)
NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值
PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区

使用USER_IND_COLUMNS查询某个TABLE中的相应字段索引建立情况

使用DBA_INDEXES/USER_INDEXES查询所有索引的具体设置情况。

在Oracle中的索引可以分为:B树索引、位图索引、反向键索引、基于函数的索引、簇索引、全局索引、局部索引等,下面逐一讲解:

一、B树索引:

最常用的索引,各叶子节点中包括的数据有索引列的值和数据表中对应行的ROWID,简单的说,在B树索引中,是通过在索引中保存排过续的索引列值与相对应记录的ROWID来实现快速查询的目的。其逻辑结构如图:

反向键索引是一种特殊的B树索引,在存储构造中与B树索引完全相同,但是针对数值时,反向键索引会先反向每个键值的字节,然后对反向后的新数据进行索引。例如输入2008则转换为8002,这样当数值一次增加时,其反向键在大小中的分布仍然是比较平均的。

反向键索引的创建示例:

createindex 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

创建示例:

首先创建一个分区表

createtable 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)

globalpartition by range(stuno)

(

partition p1 values less than(1000) tablespace A1,

partition p2 values less than(maxvalue) tablespace A2

);--只可以进行range分区

创建全局非分区索引(1vN)

createindex ind_t on student(stuno) GLOBAL;

㈤ 在数据表中索引有什么用,怎么建立索引

索引用于快速找出在某个列中有一特定值的行,不使用索引,Mysql必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多。建立索引的操作步骤如下:

1、首先我们打开一个要操作的数据表,如下图所示,我们需要给name字段添加索引。

㈥ mongo数据库是怎么创建索引

2种方式:

(1)mongo shell

db.yourCollectionName.createIndex({fieldName: 1})

举例:

db.gameShortLink.createIndex({shortLink: 1})

(2)pymongo代码

indexKeyList = [

("fieldName", pymongo.ASCENDING),

]

mongoCollection.create_index(indexKeyList)

注:

一次性创建多个索引,举例:

import pymongo

from pymongo import IndexModel

# from pymongo import ASCENDING, DESCENDING

indexShortLink = IndexModel([("shortLink", pymongo.ASCENDING)], name="shortLink")

indexIsParseOk = IndexModel([("parsedLink.isParseOk", pymongo.ASCENDING)], name="parsedLink_isParseOk")

indexErrType = IndexModel([("parsedLink.errType", pymongo.ASCENDING)], name="parsedLink_errType")

indexRealGameName = IndexModel([("parsedGame.realGameName", pymongo.ASCENDING)], name="parsedGame_realGameName")

indexGameTheme = IndexModel([("parsedGame.gameTheme", pymongo.ASCENDING)], name="parsedGame_gameTheme")

indexModelList = [

indexShortLink,

indexIsParseOk,

indexErrType,

indexRealGameName,

indexGameTheme,

]

mongoCollectionShortlink.create_indexes(indexModelList)




详见:(网络搜)

【已解决】用mongo的shell给MongoDB创建索引以提高查询速度

【已解决】PyMongo中如何一次性创建多个index索引

㈦ mysql数据库怎么建索引

表名右击,菜单里面就有索引,然后选择要索引的字段。。确定就可以了

㈧ 怎么建立数据库的索引

PS:索引不是给你使用的,而是数据库本身使用,索引只是为了让你的查询更加快速而已

SQL CREATE INDEX 语法
在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name
ON table_name (column_name)

注释:”column_name” 规定需要索引的列。
SQL CREATE UNIQUE INDEX 语法
在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name
ON table_name (column_name)

CREATE INDEX 实例
本例会创建一个简单的索引,名为 “PersonIndex”,在 Person 表的 LastName 列:
CREATE INDEX PersonIndex
ON Person (LastName)

如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:
CREATE INDEX PersonIndex
ON Person (LastName DESC)

假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX PersonIndex
ON Person (LastName, FirstName)12

㈨ 建立数据表索引的方法有几种

索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。
在数据库表中创建的索引可以是是唯一索引、主键索引和聚集索引
景安服务器即使为您解答

热点内容
linux查看svn密码 发布:2024-05-03 18:12:47 浏览:803
地铁逃生怎么进入游戏安卓 发布:2024-05-03 17:49:35 浏览:992
aws云存储 发布:2024-05-03 17:48:50 浏览:954
安卓微信王者号怎么转成苹果 发布:2024-05-03 17:44:38 浏览:745
原子类源码 发布:2024-05-03 17:44:19 浏览:165
安卓浏览图片如何全屏 发布:2024-05-03 17:24:08 浏览:104
传奇仓库脚本 发布:2024-05-03 17:23:56 浏览:541
2010数据库技术及应用 发布:2024-05-03 17:21:51 浏览:921
小米账号密码忘了怎么 发布:2024-05-03 17:17:44 浏览:780
皇家农场脚本 发布:2024-05-03 16:46:41 浏览:458