slqserver 主键自动添加聚集索引的问题

Posted 咕咚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了slqserver 主键自动添加聚集索引的问题相关的知识,希望对你有一定的参考价值。

据我们所了解,sqlserver 在添加主键的时候,会自动将我宝贵的聚集索引添加在我们的ID 上,然后,有些时候,我们想添加在

常用的搜索的字段上,这个时候,如果主键已经创建了;我们可以使用下面的方法来进行更改:

 

--create index index_索引名 on 表名(列名)

sp_helpindex \'Category\' --查看表的索引

exec sp_helpconstraint \'Category\' --查看表的约束

Alter Table Category
DROP constraint [CATEGORY_PRIMARY_KEY_ID]  --删除约束

Create CLUSTERED Index Category_CLUSTERED_Name --创建聚集索引
on Category(Name)

DROP INDEX Category.Category_CLUSTERED_Name    --删除索引

--然后我们再添加主键;
ALTER TABLE CATEGORY
ADD CONSTRAINT CATEGORY_PRIMARY_KEY_ID PRIMARY KEY(CategoryId)

 

那么如何在我们创建主键的时候,不自动添加我们的聚集索引呢;

 

答案是这样:

 

USE [Test]
  GO
  CREATE TABLE A
  ( 
    ID INT PRIMARY KEY CLUSTERED  --聚集索引
  )
  
  
  ---------------------------------
 USE [Test]
 GO
  CREATE TABLE B
 ( 
   ID INT PRIMARY KEY NONCLUSTERED  --非聚集索引
 )
 
 
-- DROP TABLE [A]
 --DROP TABLE [B]

 sp_helpindex \'A\' --查看表的索引
 GO
 sp_helpindex \'B\' --查看表的索引

 

https://www.cnblogs.com/lyhabc/archive/2013/02/09/2909621.html

 

附带:sqlserver 中约束类型

和常见操作:

有这几种约束

NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT

 

---添加主键约束
alter table 表名
add constraint 约束名 primary key (主键)

---添加唯一约束
alter table 表名
add constraint 约束名 unique (字段)

---添加默认约束
alter table 表名
add constraint 约束名 default (\'默认内容\') for 字段

--添加检查check约束,要求字段只能在1到100之间
alter table 表名
add constraint 约束名 check (字段 between 1 and 100 )

---添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)
alter table 从表
add constraint 约束名
foreign key(关联字段) references 主表(关联字段)
GO

sql server中删除约束的语句是:

alter table 表名 drop constraint 约束名

sp_helpconstraint 表名 找到数据表中的所有列的约束

 

 

这里添加一个基本ef 关于map配置,使用反射进行的configritaon.add info

 

以上是关于slqserver 主键自动添加聚集索引的问题的主要内容,如果未能解决你的问题,请参考以下文章

怎么取消自增列上的聚集索引

MySQL中怎样创建聚集索引和非聚集索引,求创建这两种索引的SQL语句。谢谢

主键上的非聚集索引?

求高手解答mysql 的索引怎么用

索引之见解

聚集索引和唯一索引的区别是啥?