首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何删除聚簇属性但保留表中的主键.SQL Server 2005

要删除SQL Server 2005中的聚簇属性但保留表中的主键,您需要按照以下步骤操作:

  1. 首先,您需要创建一个新的非聚簇索引,这将作为临时的主键索引。
代码语言:sql
复制
CREATE UNIQUE NONCLUSTERED INDEX temp_pk_index ON your_table_name (column_name);

your_table_name替换为您的表名,将column_name替换为您的主键列名。

  1. 然后,您需要删除原有的聚簇索引。
代码语言:sql
复制
DROP INDEX clustered_index_name ON your_table_name;

clustered_index_name替换为您的聚簇索引名称,将your_table_name替换为您的表名。

  1. 接下来,您需要将新创建的非聚簇索引更改为主键。
代码语言:sql
复制
ALTER TABLE your_table_name ADD CONSTRAINT pk_constraint_name PRIMARY KEY CLUSTERED (column_name);

your_table_name替换为您的表名,将column_name替换为您的主键列名,将pk_constraint_name替换为您的主键约束名称。

  1. 最后,您需要删除临时的非聚簇索引。
代码语言:sql
复制
DROP INDEX temp_pk_index ON your_table_name;

temp_pk_index替换为您的临时索引名称,将your_table_name替换为您的表名。

现在,您已经成功删除了聚簇属性,同时保留了表中的主键。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为啥count(*)会这么慢?

拓展:MyISAM 如果没有查询条件,只是简单统计数据总数,将会返回超快,因为service层获取到信息总行数是准确,而InnoDB只是一个估值。实例废话不多说,先看一个例子。...这里有很关键一点:count(*)也会走索引,在当前情况下使用了索引。好,再往下看。2)存在一个非索引(二级索引)给添加一个hospital_code索引。...绝大多数情况执行计划是可信。 索引类型分为索引和非索引(二级索引)。其中数据都是挂在索引上,非索引上只是记录主键id。 抛开数据内存,只谈数据量,都是扯淡。...那如果存在2个甚至多个非索引又该如何选择呢?那肯定选择最短,占用内存最小一个呀,在回头看看上面的实例,还迷惑吗。同样都是非索引。...6.InnoDB通过二级索引记录next_record属性找到下一条二级索引记录,并返回给server层。7.server层继续给count变量加1。

87020

数据库创建索引条件和注意事项

如果建立索引,那么需要空间就会更大;如果非索引很多,一索引改变,那么所有非索引也会跟这变; 当对表数据进行增加、删除和修改视乎,索引也要动态维护,一旦一个数据改变,并且改变列比较多...创建索引,应当考虑以下因素 每一个只能有一个索引,因为数据物理顺序只能有一个(按序排列表数据,只有一种排列方法,笔者注); 在创建任何非索引之前都应当先创建索引。...在索引创建过程SQL Server临时使用当前数据库磁盘空间,当创建索引时,需要1.2倍空间大小。因此,需要保证有足够磁盘空间用于创建索引。...当创建唯一性索引时,应认真考虑如下规则 当在创建主键约束或者唯一性键约束时,SQL Server会自动创建一个唯一性索引; 如果已经包含有数据,那么创建索引时,SQL Server会检查表已有数据冗余性...; 每当使用插入语句或者修改语句时,SQL Server都会检查数据冗余性;如果有冗余值,那么SQL Server将会取消该语句执行,并且返回一个错误信息; (确保每一行都有一个唯一值,这样逻辑上可以确保每一个实体都可以唯一确认

2.7K20
  • MySQL索引详解

    按照底层存储方式角度划分:索引(聚集索引):索引结构和数据一起存放索引,InnoDB 主键索引就属于索引。...InnoDB 主键索引就属于索引。...MySQL MyISAM 引擎,不管主键还是非主键,使用都是非索引。非索引叶子节点并不一定存放数据指针,因为二级索引叶子节点就存放主键,根据主键再回查数据。...当查到索引对应指针或主键后,可能还需要根据指针或主键再到数据文件或查询。这是 MySQL 文件截图:索引和非索引:非索引一定回查询吗(覆盖索引)?非索引不一定回查询。...知道如何分析 SQL 语句是否走索引查询我们可以使用 EXPLAIN 命令来分析 SQL 执行计划 ,这样就知道语句是否命中索引了。

    12220

    MySQL优化利器⭐️索引条件下推,千万数据下性能提升273%🚀

    server层与存储引擎层如何交互?索引和二级索引存储内容区别?什么是回?回有哪些开销?如何避免回?什么是索引条件下推?什么时候可以用上索引条件下推?索引条件下推能解决什么问题?...二级索引只存储需要列和主键主键)索引存储所有数据由于我们使用索引没有存储查询列表需要列,于是需要去主键)索引再次查询获取其他列值在这个过程主键值可能是乱序,因此回查询索引时...,会出现随机IO(开销大)server层与存储引擎层交互单位是记录server层优化器根据索引生成执行计划,执行器调用存储引擎层存储引擎层在联合索引寻找满足 age=18记录每次找到记录回查询索引获取其他列值然后返回给...回不仅要多查索引,还可能导致随机IO(增加与磁盘交互)虽然可以通过索引条件下推优化减少回次数,还是会有符合条件记录需要回那有没有什么办法可以尽量避免回或让回开销变小呢?...,需要回查询索引获取其他列值;回查询索引时主键值无序可能导致随机IO索引条件下推在多查询条件情况下,在存储引擎层多判断一次where其他查询条件,利用二级索引上其他列判断记录是否满足其他查询条件

    40331

    学习SQL Server这一篇就够了

    SQL Server 2005该类型是为了向下兼容而保留数据类型,微软推荐用户使用varbinary(MAX)数据类型来替代image类型。...每个只有一个索引,SQL Server 2005是按B树(BTREE)方式组织索引索引叶节点就是数据节点,由于数据记录按索引键次序存储,因此查找效率高。...除非在创建主键时特别指定,否则创建主键时会自动创建索引。 非索引 :非索引索引顺序与数据物理顺序无关 。...非索引也是按B树方式组织索引B树叶节点不存放数据页信息,而是存放非聚集索引键值,并且每个键值项都有指针指向包含该键值数据行。...DDL触发器,只由T-SQL语句触发。是SQL Server 2005新增功能,也是由相应事件触发,DDL触发器在执行CREATE、ALTER、DROP等语句时触发。

    6.1K30

    5年Java开发经验,面试挂在MySQL InnoDB上!大厂究竟多看重MySQL?

    B+树获取对应数据行,这也叫回查询),在叶子节点存放数据记录(此时为主键索引或者说是索引,即数据行和索引存放在一起索引)或者主键索引主键值(此时为非索引),所有的数据记录都在同一层,叶子节点...主键索引 innodb存储引擎使用主键索引作为索引,索引特点是非叶子节点存放主键作为查找关键字,叶子节点存放实际数据记录本身(也称为数据页),从左到右以关键字顺序,存放数据记录,故索引其实就是数据存放方式...在查询当中,如果是通过主键来查找数据,即使用explain分析SQLkey显示PRIMARY时,查找效率是最高,因为叶子节点存放就是数据记录本身,所有可以直接返回,而不需要像非索引一样需要通过额外回查询...即通过辅助索引定位到需要数据后,如果不能通过索引覆盖所需列,即通过该辅助索引列来获取该次查询所需所有数据列,则需要通过该对应索引主键值定位到在索引主键,然后再通过该主键值在索引中找到对应叶子页...,从而获取到对应数据记录,所以整个过程涉及到先在辅助索引查找,再在索引(即主键索引)查找(回查询)两个过程。

    65120

    MySQL 加锁处理分析

    Cluster Index:索引 InnoDB存储引擎数据组织方式,是索引:完整记录,存储在主键索引,通过主键索引,就可以获取记录所有的列。...列,回主键索引(索引),然后将索引上name = ‘d’ 对应主键索引项加X锁。...从图中可以看到,满足删除条件记录有两条,但是,索引上所有的记录,都被加上了X锁。无论记录是否满足条件,全部被加上X锁。既不是加锁,也不是在满足条件记录上加行锁。 有人可能会问?...结论:在Repeatable Read隔离级别下,如果进行全扫描的当前读,那么会锁上表所有记录,同时会锁上索引内所有GAP,杜绝所有的并发 更新/删除/插入 操作。...);而Table Filter对应过滤条件,则在索引读取后,在MySQL Server层面过滤,因此索引上也需要X锁。

    3.5K61

    关于sql索引优缺点(面试常考)

    唯一性索引保证在索引列全部数据是唯一,不会包含冗余数据。如果已经有一个主键约束或者唯一性键约束,那么当创建或者修改时,SQL Server自动创建一个唯一性索引。...当创建唯一性索引时,应该认真考虑这些规则:当在创建主键约束或者唯一性键约束时,SQL Server自动创建一个唯一性索引;如果已经包含有数据,那么当创建索引时,SQL Server检查表已有数据冗余性...;每当使用插入语句插入数据或者使用修改语句修改数据时,SQL Server检查数据冗余性:如果有冗余值,那么SQL Server取消该语句执行,并且返回一个错误消息;确保每一行数据都有一个唯一值...,但是,实际索引大小常常根据索引列大小变化而变化;在索引创建过程SQL Server临时使用当前数据库磁盘空间,当创建索引时,需要1.2倍空间大小,因此,一定要保证有足够空间来创建索引...最后,将全部查找到符合查询语句条件记录显示出来。     在SQL Server,当访问数据库数据时,由SQL Server确定该是否有索引存在。

    3.3K10

    聚集索引:SQL Server 进阶 Level 3

    或者,SQL Server可以永久性地对表行进行排序,以便通过搜索关键字快速访问它们,就像通过搜索关键字快速访问非聚集索引条目一样?答案取决于您是否指示SQL Server上创建索引。...与非索引是一个独立对象并占用他们自己空间不同,索引和是一样。通过创建聚集索引,可以指示SQL Server行排序为索引键序列,并在将来数据修改期间维护该序列。...不要混淆; SalesOrderDetailID不是主键。 SalesOrderID / SalesOrderDetailID组合是主键; 以及索引索引键。...因此,销售订单所有行项目都会在SalesOrderDetail连续出现。 请记住以下有关SQL Server索引附加要点: 由于索引条目是行,聚集索引条目中没有书签值。...每个都必须是索引。 结论 索引是一个有序,其顺序由您在创建索引时指定,并由SQL Server维护。 根据其关键值,该任何行都可以快速访问。

    1.1K30

    【我在拉勾训练营学技术】mysql 索引面试再也不怕啦

    、辅助索引(二级索引) 从数据存储和索引键值逻辑关系划分:聚集索引(索引)、非聚集索引(非索引) 准备工作 首先我们来创建一张吧,然后创建索引操作在这张来进行。...聚集索引 索引和非索引:B+Tree叶子节点存放主键索引值和行记录就属于索引;如果索引值和行记录分开存放就属于非索引。 在InnoDB引擎主键索引采用就是索引结构存储。...索引是一种数据存储方式,InnoDB索引就是按照主键顺序构建 B+Tree结构。B+Tree叶子节点就是行记录,行记录和主键值紧凑地存储在一起。...先通过辅助索引定位主键值,然后再通过索引定位行记录,这就叫做回查询,它性能比扫一遍索引树低。...不管是SQL-Server官网,还是MySQL官网,都表达了:只需要在一棵索引树上就能获取SQL所需所有列数据,无需回,速度更快,这就叫做索引覆盖。

    66132

    MySQL 面试题

    和非索引将数据行和索引顺序相匹配,只能由一个,通常似乎主键索引;非索引则是独立于数据行物理顺序。...索引(Clustered Index):在索引,表记录物理顺序和键值逻辑(索引)顺序相同。有时候索引和主键索引是一回事,因此有的系统每个只能有一个索引。...一个可能有多个候选键。 主键:从候选键中选出来一个,用作唯一表示。只能有一个主键。 数量: 一个可以有多个候选键,只能有一个主键。...何时使用索引与非索引? 索引:索引并不仅仅是一个索引,而是决定数据存储和排序方式数据结构。在索引数据物理上按索引键顺序存储。...合适使用索引: 主键查询:经常通过主键进行查询,适合使用索引,因为它提供了对主键快速查找能力。

    15111

    1w字MySQL索引面试题(附md文档)

    存储引擎,我们只需要根据主键值对索引进行一次查找就能找到对应记录,而在MyISAM却需要进行一次回操作,意味着MyISAM建立索引相当于全部都是二级索引 。...MyISAM操作是十分快速,因为是拿着地址偏移量直接到文件取数据,反观InnoDB是通过获取主键之后再去索引里找记录,虽然说也不慢,还是比不上直接用地址去访问。...优点: 数据访问更快 ,因为索引和数据保存在同一个B+树,因此从索引获取数据比非索引更快。 索引对于主键排序查找和范围查找速度非常快。...不一定 少量数据全扫描也很快,可以直接获取到全量数据 唯一索引会影响插入速度,建议使用 索引过多会影响更新,插入,删除数据速度 17、如果是大段文本内容,如何创建(优化)索引?...主键值进行回,返回完整记录给server层,server层再判断其他搜索条件是否成立。如果成立则保留该记录,否则跳过该记录,然后向存储引擎层要下一条记录。

    31920

    一条简单更新语句,MySQL是如何加锁

    聚集索引 也叫做索引。在InnoDB,数据组织方式就是索引:完整记录,储存在主键索引,通过主键索引,就可以获取记录中所有的列。...列,回到主键索引(索引),然后将索引上name = 'e' 对应主键索引项加X锁。...这样做,保证了最后满足条件记录加上锁,但是每条记录加锁操作是不能省略。 结论:若id列上没有索引,MySQL会走索引进行全扫描过滤。由于是在MySQl Server层面进行。...这种情况下,这个,除了不加锁快照读,其他任何加锁并发SQL,均不能执行,不能更新,删除,插入,这样,全锁死。...一条简单删除语句加锁情况也就分析完成了,但是学习不止于此,还在继续,对于复杂SQL语句又是如何加锁呢?MySQL索引分析又是怎样呢?性能分析、性能优化这些又是怎么呢?

    3.7K20

    mysql索引及执行计划

    BTREE查找算法演变 B-TREE 普通BTREE B+TREE 叶子节点双向指针 B++TREE 枝节点双向指针 mysql如何使用BTREE b树分三层 索引构建过程 leaf 叶子 存储数据行时就是有序...(exent 区)索引 extent区 : 连续64数据页 默认1m IOT组织 : 会按照索引组织方式,存储数据行 索引是建 主键列 如果没有主键是第一个非空唯一键 如果这两个都没有...name=‘c’; 1 如果要查询数据走索引,会根据统计信息 记录root节点数据页号码 2查询如果不满足单列条件,查询一整行数据 会拿主键值在次 (回查询) 做索引查询 联合索引 select...,按照辅助索引列,作为条件查询时,先查找付索引树得到id,在回到索引树查找数据行信息 2 io量多,io次数多,sql层和engine交互多次 io偏高 cup偏高 3 辅助索引能够完全覆盖查询结果...索引名(字段(前缀)) 查询索引 desc 名; show index from 名; 删除索引 alter table 名 drop 索引名; 执行计划获取和分析 工具 desc sql语句 explain

    1.3K31

    史上最全!Mysql 索引知识详解

    一、背景 分享这篇文章目的:提升开发、DBA、QA在项目过程关于提测 sqlsql 变更关于添加、修改、删除索引合理性分析能力; 二、Mysql索引 1.概念说明 简单来说,索引出现其实就是为了提高数据查询效率...索引分类 (1).索引 主键索引 在Innodb,Mysql数据是按照主键顺序来存放。那么索引就是按照每张主键来构造一颗B+树,叶子节点存放就是整张行数据。...由于表里数据只能按照一颗B+树排序,因此一张只能有一个索引。 在Innodb索引默认就是主键索引。...假如表没有设定主键,则按照下列规则来创建索引 没有主键时,会用一个唯一且不为空索引列做为主键,成为此索引。 如果没有这样索引,InnoDB会隐式定义一个主键来作为索引。...对应索引结构图如下: 从图中可以看下结构图共分为上下部分,上部分是:由主键s_id形成索引(B+树),下部分是:student存储在磁盘上真实数据。

    1.2K40

    数据库索引作用和长处缺点

    通过定义主键约束或者唯一性键约束,也能够间接创建索引。主键约束是一种保持数据完整性逻辑,它限制表记录有相同主键记录。在创建主键约束时,系 统自己主动创建了一个唯一性索引。...尽管,在逻辑上,主键约束是一种重要结构,可是,在物理结构上,与主键约束相相应结构是唯一性索引。换句话 说,在物理实现上,不存在主键约束,而仅仅存在唯一性索引。...唯一性索引保证在索引列所有数据是唯一,不会包括冗余数据。假设已经有一个主键约束或者唯一性键约束,那么当创建或者改动时,SQL Server自己主动创建一个唯一性索引。...当创建唯一性索引 时,应该认真考虑这些规则:当在创建主键约束或者唯一性键约束时,SQL Server自己主动创建一个唯一性索引;假设已经包括有数据,那么当创建索引时,SQL Server检查表已有数据冗余性...;每当使用插入语句插入数据或者使用改动语句改动数据时,SQL Server检查数据冗余性:假设有冗余值,那么SQL Server取消该语句运行,而且返回一个错误消息;确保每一行数据都有一个唯一值

    95110

    数据库-面试

    数据结构角度 B+Tree索引 |BTree索引 哈希索引 全文索引 物理结构角度 主键索引(索引) 叶子节点存是整行数据,非索引(二级索引):叶子节点存主键值 简述B-Tree与B+...简述索引和非索引 聚集索引又叫做索引,是按照每张主键构建一颗B+树,数据库每个搜索键值都有一个索引记录,每个数据页通过双向链表连接。数据访问更快,更新代价高。...而回就是根据上边那个主键通过索引查找到相应位置,获得数据。 简述联合索引和最左匹配原则 联合索引是指对表上多个列关键词进行索引。...对于select * from 主键=XX,基于主键普通查询仅查找主键这棵树,因为主键上建立索引,主键索引叶子节点存储整行全部信息。...乐观锁如何保证一致性 通过数据属性,增加版本号属性,进行比较,比较目前操作数据是否是最新版本。

    1K30

    MySQL更新语句加锁

    聚集索引 也叫做索引。在InnoDB,数据组织方式就是索引:完整记录,储存在主键索引,通过主键索引,就可以获取记录中所有的列。...name列,回到主键索引(索引),然后将索引上name = 'e' 对应主键索引项加X锁。...这样做,保证了最后满足条件记录加上锁,但是每条记录加锁操作是不能省略。 结论:若id列上没有索引,MySQL会走索引进行全扫描过滤。由于是在MySQl Server层面进行。...这种情况下,这个,除了不加锁快照读,其他任何加锁并发SQL,均不能执行,不能更新,删除,插入,这样,全锁死。...一条简单删除语句加锁情况也就分析完成了,但是学习不止于此,还在继续,对于复杂SQL语句又是如何加锁呢?MySQL索引分析又是怎样呢?性能分析、性能优化这些又是怎么呢?还需要进一步学习探索

    2.1K20

    Java MySQL数据库专题

    在索引检查时候,首先按照B+树搜索算法搜索索引,如果指定Key存在,则取出其data域值,然后根据data域地址值读取相应数据记录。这被称为“非索引”。...MyISAM索引文件和数据文件是分离。 InnoDB:InnoDB存储引擎B+树索引可以分为索引和辅助索引(非索引或者二级索引)。...索引就是按每张主键构造一棵B+树,同时叶子节点中存放是行记录数据,因此也将索引叶子节点也称为数据页,这个特性决定了索引组织数据也是索引一部分。...日常工作,根据实际情况自行添加索引都是辅助索引(非索引)。辅助索引是为了查找主键索引而建立二级索引,先在辅助索引中找到主键索引,再使用主键索引在主索引查找数据。...注意:虽然InnoDB存储引擎采取REPEATABLE-READ隔离级别,但是它使用Next-key Lock算法,因此也可以避免幻读产生,这与其他数据库(SQL Server)是不同

    1.7K40

    你必须懂一些MySQL索引技巧

    我们需要拿着主键值再去索引(主键索引)叶子节点中去拿到完整用户记录,这个过程叫做回。...进行回时候,极有可能出现主键id所在记录在索引叶子节点中反复横跳情况(正如上图中回3条线表示那样),也就是随机IO。...索引覆盖、索引下推 3.1 索引覆盖 想一下,如果非索引叶子节点上有你想要所有数据,是不是就不需要回了呢?...正常情况下查询过程是这个样子: InnoDB使用联合索引查出所有name为蝉沐风二级索引数据,得到3个主键值:3485,78921,423476; 拿到主键索引进行回,到索引拿到这三条完整用户记录...SQL优化很有益处,同时需要注意是这些经验并非金科玉律。

    58360
    领券