<ASP.NET>SQL SERVER 默认主键,默认了聚簇索引

原创 2012年03月22日 20:39:51

从我的网易博客移动。。。。。


SQL SERVER 如果在建表的时候建立了主键,没有建立聚簇索引,那么久默认了主键是聚簇索引。坑爹啊。这样,这么重要的聚簇索引就到了主键上了。要修改麻烦死了。。

研究了半天,发现有两种方法:


首先说下我建立的表:

 

  

订单详情 T_DetailOrder

字段名称

说明

数据类型

主键

DO_ID

主键

Bigint

O_ID

订单号

Bigint

 

Mname

菜名

Nvarchar(20)

 

Mprice

价格

Float

 

 

 

 

 

为订单详情做O_ID的聚簇索引。

第一种建聚簇索引的方法:

 

删除表后重新建立表: 

直接在建立的时候建立聚簇索引

 
create table T_DetailOrder ( 
 DO_ID Bigint identity, 
 O_ID Bigint, 
    Mname Nvarchar(20),
    Mpirce float,
 primary key nonclustered (DO_ID), 
 unique clustered (O_ID) 
)


第二种方法:
由于有主键,默认主键为聚簇索引,删除主键上的聚簇索引失败。只有先删除主键,再建立主键,然后建立聚簇索引。

 

获得表的主键 :exec   sp_pkeys  T_DetailOrder,得到主键为PK_T_DetailOrder

删除主键:alter table T_DetailOrder DROP  CONSTRAINT PK_T_DetailOrder

建立主键和聚簇索引:

Alter table T_DetailOrder add CONSTRAINT PK_T_DetailOrder PRIMARY KEY nonclustered (DO_ID)
create clustered index O_IDindex on  T_DetailOrder(O_ID)
 


 

这样,就建立好O_ID的索引了。。坑爹的SQL SERVER 。。。。

MS SQL SERVER 聚簇索引和非聚簇索引区别

在已创建聚簇索引的表上创建的非聚簇索引,与在未创建聚簇索引的表上创建的非聚簇索引,结构上有何区别? 简单说一下吧。 先说堆表: 没有聚集索引时,表是一个堆表,记录不按任何顺序在数据页中存储,也就是存...
  • waterxcfg304
  • waterxcfg304
  • 2016年03月01日 20:40
  • 1420

聚簇索引与非聚簇索引学习总结

聚簇索引与非聚簇索引的区别     通常情况下,建立索引是加快查询速度的有效手段。但索引不是万能的,靠索引并不能实现对所有 数据的快速存取。事实上,如果索引策略和数据检索需求严重不...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年06月29日 19:32
  • 1179

【转】关于SQL Server2005主键和聚簇索引设置的问题

小弟想问个问题,在SQL Server 2005上,建立主键的同时就会默认在主键上设置聚簇索引,那么能否在一个字段上设置主键和唯一性索引(Unique),但是把聚簇索引设置到另一个字段上? 举个简单的...
  • caixiexin
  • caixiexin
  • 2010年04月27日 20:54
  • 1748

是不是只要有主键的InnoDB表都是聚簇索引表

刚开始接接触MySQL, 好像说InnoDB的主键是按聚簇索引实现的,也就是说,只要有主键,则该表就是一个按聚簇索引来组织的表,(像Oracle的IOT那样),对么?...
  • geng67q5h
  • geng67q5h
  • 2014年10月30日 23:07
  • 349

聚簇索引概念(Myisam与Innodb索引的区别)

myisam的主索引和次索引都指向物理行,下面来进行讲解 innodb的主键下存储该行的数据,此索引指向对主键的引用 myisam的索引存储图如下,可以看出,无论是id还是cat_id...
  • qq_25551295
  • qq_25551295
  • 2015年10月04日 22:47
  • 2715

mysql:InnoDB的主键采用聚簇索引,二级索引不采用聚簇索引

我的归纳: (1)InnoDB的主键采用聚簇索引存储,使用的是B+Tree作为索引结构,但是叶子节点存储的是索引值和数据本身(注意和MyISAM的不同)。 (2)InnoDB的二级索引不使用聚蔟索引,...
  • u010841296
  • u010841296
  • 2017年08月20日 10:51
  • 294

Sql Server删除主键和重建主键

Sql Server删除主键和重建主键
  • bobwu
  • bobwu
  • 2010年07月06日 11:29
  • 14178

SQL Server 自动 生成流水号 字符串主键

根据给定的编码比如Emp,生成一个字符串类型的流水号,如:20110102Emp0001
  • Ranen2010
  • Ranen2010
  • 2010年11月15日 17:41
  • 1905

Mysql--序列1--聚簇索引&非聚簇索引

而MySQL作为一个开源的数据库,在各大互联网公司使用极为普遍。本系列将从Mysql开始,一步步展示关于存储设计的诸多策略。 说到InnoDB和MyISAM的区别,很多人都会提到一个支持事务,一个不...
  • ahjxhy2010
  • ahjxhy2010
  • 2016年12月22日 09:32
  • 312

MYSQL索引:对聚簇索引和非聚簇索引的认识

聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法。特点是存储数据的顺序和索引顺序一致。 一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引。 在《数据库原理》一书...
  • alexdamiao
  • alexdamiao
  • 2016年07月17日 22:03
  • 10620
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:<ASP.NET>SQL SERVER 默认主键,默认了聚簇索引
举报原因:
原因补充:

(最多只允许输入30个字)