一个简单的主键问题

artak 2010-10-27 10:26:55
我建了个表,由于没有主键,我想加个主键字段叫ID,自增的吧,这样能提高效率吗?我查表的时候还是查其他字段的
如果提高效率,那怎么给这个字段加值?因为数据已经导入了,新建的ID是空值.
...全文
145 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
obuntu 2010-10-27
  • 打赏
  • 举报
回复

楼主其实问的是索引的问题。

其他,参考楼上吧。

alter table tb add column id identity(int,1,1)

应为

alter table tb add id identity(int,1,1)

feilniu 2010-10-27
  • 打赏
  • 举报
回复
我建了个表,由于没有主键,
====
不是没有主键,是你没有去找。
任何表都应该而且会有一个或多个可以用做主键的唯一标识(候选码),根据业务逻辑和性能要求从中选择一个做主键即可。(选择哪一个更合适,只能根据个人经验和对系统设计的理解而定)
这个唯一标识可能是现成的,也可能需要你自动生成,但结果是这个主键一定是有意义的


我想加个主键字段叫ID,自增的吧,这样能提高效率吗?
====
添加一个没有意义的自增字段做主键,除了占用系统空间(系统要多存储一个字段)和脑力空间(开发维护人员要多理解一个字段)之外,没有任何好处
除非你根据系统设计,选择用自增字段生成主键,并为该字段定义含义。
feilniu 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 artak 的回复:]

这样加主键能否提高查询效率呢?
[/Quote]

LZ查表的时候还是查其他字段的,所以没有影响。

更严格地说,增加一个标识列,使得每行记录多占用4个字节,可能记录读取效率会降低一些,但不会太明显。

alter table tb add column id identity(int,1,1)
况且这个语句只加了标识列,既不是主键也不是(聚集)索引,即使使用id查询,效率也不会高。
Mr_Nice 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 artak 的回复:]

这样加主键能否提高查询效率呢?
[/Quote]

如果用到主键当然效率会提高了。
artak 2010-10-27
  • 打赏
  • 举报
回复
这样加主键能否提高查询效率呢?
artak 2010-10-27
  • 打赏
  • 举报
回复
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'column' 附近有语法错误。
--小F-- 2010-10-27
  • 打赏
  • 举报
回复
alter table tb add column id identity(int,1,1)
viqn7qdnt 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
SQL code
alter table tb add columns id inentiy(int,1,1)
[/Quote]
up
zengjiaqin 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
SQL code
alter table tb add columns id inentiy(int,1,1)
[/Quote]
--小F-- 2010-10-27
  • 打赏
  • 举报
回复
alter table tb add columns id inentiy(int,1,1)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧