联合主键

mycodeis0000 2012-07-05 04:07:17
T1表中有2字段
CustID
AreaID

他们是联合主键,也就是说他们具有惟一索引。
但有另一张表T2 的主键是CustID 表数据量特别大几千W条数据

请问T1表中的CustID还需要建单独的索引么?
如果CustID 与 AreaID 没有联合主键,我想肯定需要建索引的但存在联合主键CustID 需要建单独的索引?




...全文
137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mycodeis0000 2012-07-05
  • 打赏
  • 举报
回复
谢谢!!明白了
Rotel-刘志东 2012-07-05
  • 打赏
  • 举报
回复
不需要单独建立索引。这两个表间的关系是主外键关系吗?
筱筱澄 2012-07-05
  • 打赏
  • 举报
回复
2楼说的很对
关键看你CustID 和 AreaID 这个联合主键的顺序了
顺序也是先CustID 再AreaID 没有必要在建索引了这样已经是最优方案了
如果是 先AreaID 再 CustID 则需要在CustID 上面建立索引

因为联合主键 是先按照第一个字段排序,在第二个

好比 order by CustID, AreaID
前面的顺序为主,后面的顺序实际上已经不是它的真实顺序了,所以,后面那个字段基本上不会利用到索引。
shoppo0505 2012-07-05
  • 打赏
  • 举报
回复
我个人理解,
1.如果你已经有CustID 和 AreaID的联合主键,顺序也是先CustID 再AreaID,那么没有必要再建CustID (具体性能没有测试过)
2. 如果主键顺序是先AreaID的,那么可以建一个CustID的索引。(性能测试过,又提高。)



  • 打赏
  • 举报
回复
主键默认聚集索引,一个表只能有一个聚集索引

34,590

社区成员

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

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