数据库索引命名
‘壹’ sql 索引重命名
看一下SQL SERVER的联机帮助,你那样的用法不能重新命名索引。
语法:
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' [ , [ @objtype = ] 'object_type' ]
参数:
[ @objname = ] 'object_name'
用户对象或数据类型的当前限定或非限定名称。如果要重命名的对象是表中的列,则 object_name 的格式必须是 table.column。如果要重命名的对象是索引,则 object_name 的格式必须是 table.index。
只有在指定了合法的对象时才必须使用引号。如果提供了完全限定名称,包括数据库名称,则该数据库名称必须是当前数据库的名称。object_name 的数据类型为 nvarchar(776),无默认值。
[ @newname = ] 'new_name'
指定对象的新名称。new_name 必须是名称的一部分,并且必须遵循标识符的规则。newname 的数据类型为 sysname,无默认值。
注意:
触发器名称不能以 # 或 ## 开头。
[ @objtype = ] 'object_type'
要重命名的对象的类型。object_type 的数据类型为 varchar(13),默认值为 NULL,可取下列值之一。
COLUMN
要重命名的列。
DATABASE
用户定义数据库。重命名数据库时需要此对象类型。
INDEX
用户定义索引。
OBJECT
在 sys.objects 中跟踪的类型的项目。例如,OBJECT 可用于重命名约束(CHECK、FOREIGN KEY、PRIMARY/UNIQUE KEY)、用户表和规则等对象。
USERDATATYPE
通过执行 CREATE TYPE 或 sp_addtype 添加别名数据类型或 CLR 用户定义类型。
示例:
重命名索引:
以下示例将 IX_ProctVendor_VendorID 索引重命名为 IX_VendorID。
USE AdventureWorks;
GO
EXEC sp_rename N'Purchasing.ProctVendor.IX_ProctVendor_VendorID', N'IX_VendorID', N'INDEX';
GO
‘贰’ 在数据表中索引有什么用,怎么建立索引
索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多。建立索引的操作步骤如下:
1、首先我们打开一个要操作的数据表,如下图所示,我们需要给name字段添加索引。
‘叁’ (数据库)创建“索引” 时为什么需要 指定索引名
建立主键默认地就建立了索引;
索引主要的功能是能够显着地加快查询。
‘肆’ sqlserver2019中索引是否可以改名
是可以更改的。
使用中的数据库你在使用这种方法显然是不合适,你用这种方法更改数据库的名字之后会提示你无法重命名数据库。这时还是同样的右键你要改名的数据库,选择属性按钮。然后在数据库属性左侧菜单栏中选择选项按钮。然后在状态栏目下有一项限制访问选项,默认的是MULTI_USER,意为多用户模式,然后你将其更改为SINGLE_USER单用户模式,点击确定即可。然后你在使用上面的方法更改数据库的名称会发现数据库改名成功了。
SQL是StructuredQuevyLanguage(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出做什么的命令,怎么做是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
‘伍’ Oracle数据库中的最常用的索引有哪些
1. b-tree索引
Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE
INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。
2. 位图索引(bitmap index)
位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。
3. 基于函数的索引
比如经常对某个字段做查询的时候是带函数操作的,那么此时建一个函数索引就有价值了。
‘陆’ 什么是“索引或数据库名称”
什么是“索引或数据库名称”
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
索引是对数据库表中一个或多个列(例如,employee
表的姓名
(name)
列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
例如这样一个查询:select
*
from
table1
where
id=10000。如果没有索引,必须遍历整个表,直
‘柒’ sql server 建立索引时,随便起的索引名称index_name起什么作用
1.
索引名称就是起一个识别的作用。
一般使用
时不会用的,但是如果你需要
删除的时候
drop
index
索引名;
此时没有索引名,就有点麻烦。
2.
sql语句
是根据查询优化器自动确定是否使用索引、使用哪个索引的。
这个和你的语法、数据的情况等等都有关。
‘捌’ 数据库索引有哪几种,怎样建立索引
数据库索引的种类:
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;
‘玖’ 数据库索引的定义
数据库索引是一种专用数据结构,允许我们快速定位信息。它的组织方式类似于二叉树结构,左侧值较小,右侧值较大。索引可以比较树状结构中的行值,以更快地定位所需数据,而不是强制扫描整个表。
当我们在一个或多个列上创建索引时,我们将它们的值存储在新结构中,还存储指行的指针。这行为会重新组织并排序信息,但不会改变信息本身。可以将数据库索引视为书后面的索引。虽然它存储了一些实际信息,但它还包含指针,指针指向可以找到更多详细信息的位置。
按照我们的搜索条件对数据进行排序后,查找所需的记录会变得更加简单。想象一下按字母顺序排序的旧电话簿。知道某人的姓氏,名字和地址意味着您可以很快找到他们的电话号码。但是如果你只知道别人的地址和名字怎么办?没有姓氏,找到电话号码将非常困难。您可以使用反向电话簿做得更好,该目录列出了基于地址的电话号码。
在数据库中,更改搜索条件通常意味着为属性组合创建新索引。如前所述,添加这些索引需要额外的磁盘空间。添加,删除或更新值时,还会对索引进行更改。