『壹』 数据库索引有哪几种,怎样建立索引
数据库索引的种类:
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;
『贰』 怎么建立数据库的索引
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
『叁』 数据库索引怎么建立
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表的两列创建索引即可:
拓展资料:
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更
『肆』 在数据表中索引有什么用,怎么建立索引
索引用于快来速找出在某个列源中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多。建立索引的操作步骤如下:
1、首先我们打开一个要操作的数据表,如下图所示,我们需要给name字段添加索引。
『伍』 如何创建聚集索引
问题一:如何用sql语句在列上建立聚集索引 可以用如下语句
create clustered index 索引名 on 表名(字段名)
问题二:如何设置聚集索引(Cluster Index) 一、使用 SQL Server Management Studio
使用对象资源管理器创建聚集索引
在“对象资源管理器”中,展开要创建聚集索引的表。
右键单击“索引”文件夹,指向“新建索引”,然后选择“聚集索引…”。
在“新建索引”对话框的“常规”页中,在“索引名称”框中输入新索引的名称。
在“索引键列芦丛陆”下,单击“添加…”。
在“从 table_name 中选择列”对话框中,选中要添加到聚集索引的表列的复选框。
单击“确定”。
在“新建列”对话框中,单击“确定”。
使用表设计器创建聚集索引
在“对象资源管理器”中,展开要使用聚集索引创建表的数据库。
右键单击“表”文件夹,然后单击“新建表…”。
右键单击上面创建的新表,然后单击“设计”。
在“表设计器”菜单上,单击“索引/键”。
在“索引/键”对话框中,单击“添加”。
从“选定的主/唯一键或索引”文本框中选择新索引。
在网格中,选择“创建为聚集的”,然后从该属性右侧的下拉列表中选择“是”。
单击“关闭”。
在“文件”菜单上,单击“保存 table_name”。
二、使用 Transact-SQL
创建聚集索引
在“对象资源管理器”中,连接到 数据库引擎的实例。
在标准菜单栏上,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击“执行”。
USE yourdatabase;
GO
CREATE TABLE dbo.TestTable
(TestCol1 int NOT NULL,
TestCol2 nchar(10) NULL,
TestCol3 nvarchar(50) NULL);
GO
-- Create a clustered index called IX_TestTable_TestCol1
-- on the dbo.TestTable table using the TestCol1 column.
CREATE CLUSTERED INDEX IX_TestTable_TestCol1
ON dbo.TestTable (TestCol1);
GO
问题三:SQL中怎么创陪顷建非聚集索引 --创建非聚集索引create nonclustered index inx_entry_stock_ on entry_stock_d(entry_stock_bi) --延伸:--创建聚集索引create clustered index inx_entry_stock_bi on entry_stock_d(entry_stock_bi) --创建主键create table yourtable (id int primary key,name varchar (50))--增加主键alter table entry_stock_d add primary key nonclustered--主键且非聚集( entry_stock_bi,aid)
--除此以外还可以通过SQL Server Management Studio 右击表 -》设计-》 右击列 根据右键菜单 建立主键和索引
问题四:数据库怎样创建一个唯一聚集索引 在 Microsoft SQL Server 数据库中,您可以创建聚集索引。在聚集索引中,表中行的物理顺序与索郑行引键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。
创建聚集索引
在对象资源管理器中,右键单击要为其创建聚集索引的表,然后单击“设计”。
此时,将在表设计器中打开该表。
在表设计器菜单上,单击“索引/键”。
在“索引/键”对话框中,单击“添加”。
从“选定的主/唯一键或索引”列表中选择新创建的索引。
在网格中,选择“创建为聚集的”,然后从该属性右侧的下拉列表中选择“是”。
保存表时将在数据库中创建该索引。
问题五:有了聚集索引,为什么还要让我创建非聚集索引 你也可以不创建。但是有索引在读取的时候会更快。但是插入的时候有可可能会变慢,这种现象得表中的数据到达一定级别的时候才会比较明显。
聚集索引和非聚集索引不冲突。聚集索引只能有一个,非聚集可以有多个
聚集索引是:将数据在物理上排序,比如,图书馆的的书,从编号1开始按数字,1,2,3,4,5这样一直排列下来,这里的 1,2,3,4,5就可以建立聚集索引,检索的时候假设你检索 >4的数据就很快。
非聚集是索引是:将数据在逻辑上排序。比如图书馆的书,按照语音 将中文的放到 A区,将英文放在B区,然后又按照图书的类目,比如 文学类 放在 B曲区的 1号货架,历史图书放在B区的2号货架,这样逻辑上的排序是非聚集索引。
手打,累。。。。这是最基本的。索引在表创建的时候有很大学问。我也是皮毛。自己深入研究吧
问题六:在SQLSERVER中怎么创建聚集索引 CREATE CLUSTERED INDEX CLUSTER_id ON TABLE_name(ID)
问题七:什么叫聚集索引,建立索引的好处。 1、聚集索引:又叫聚簇索引,物理索引,与基表的物理顺序相同,数据值的顺序总是按照顺序排列 CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW(允许有重复记录的聚簇索引) 2、非聚簇索引:CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)3、索引的好处: 1)创建唯一性索引,保证数据库表中每一行数据的唯一性2)大大加快数据的检索速度,这也是创建索引的最主要的原因3)加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。5)通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。 4、索引的缺点: 1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空 间, 如果要建立 聚簇索引,那么需要的空间就会更大。3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
问题八:MySQL中怎样创建聚集索引和非聚集索引,求创建这两种索引的SQL语句。谢谢 InnoDB按照主键进行聚集,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。
所以,对于 聚集索引 来说,你创建主键的时候,自动就创建了主键的聚集索引。
而普通索引(非聚集索引)的语法,大多数数据库都是通用的:
CREATE INDEX Syntax
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[index_type]
index_col_name:
col_name [(length)] [ASC | DESC]
index_type:
USING {BTREE | HASH | RTREE}
[java] view plain
-- 创建无索引的表格
create table testNoPK (
id int not null,
name varchar(10)
);
-- 创建普通索引
create index IDX_testNoPK_Name on testNoPK (name);
问题九:怎么用两个字段联合建立聚集索引 怎么用两个字段联合建立聚集索引
如何用sql语句在列上建立聚集索引可以用如下语句create clustered index 索引名 on 表名(字段名)
问题十:SQL中怎么创建非聚集索引 --格式:--CREATE INDEX 索引名称 ON 表名 (索引字段);--例:CREATE INDEX INX_TABLEA ON TABLEA(F1,F2,F3);
『陆』 数据库中怎么建立索引
1.数据库中的索引分为两种类型,分别是普通索引、唯一索引。下面让我们来分别介绍一下这...
2.第一种是普通索引,CREATE INDEX indexName ON mytable(...
3.第二种是唯一索引,它与普通索引是类似的,但也存在不同之处,不同之处在于索引列的值...
4.以上三张图分别为创建索引、修改表结构、创建表时直接指定的数据。而且还有四种方式来...
5.第一种方式:ALTER TABLE tbl_name ADD PRIMARY KEY (...