您现在的位置: 爱51代码网 >> 范文 >> 文章正文
sqlserver类型改成bigint了是应该聚集索引还是非聚集索引

该表只有2个字段,一个是存15位的数字,一个是存11位的数字。
以前都是varchar类型的,效率比较低。现在类型改成bigint了。
想建立索引,不清楚是应该聚集索引还是非聚集索引。是否建立主键

               A列                        B列
460002342342311,11111111111
460002342342312,22222222222
460002342342313,33333333333
460002342342314,44444444444

数据格式如上,两列均不会重复。
主要执行insert跟delete

insert效率可以
delete效率一般,SQL如下:
DELETE FROM T_IMSIPHONERELATIONS WHERE IMSI in (460002342342311,460002342342312)
OR TELEPHONE in (11111111111,22222222222)

以上两列该如何建立索引以及主键 效率最高呢?

DELETE 的动作是先 select 找到数据,在删除数据;所以创建索引可以帮助加快delete. 根据你的随机删除(random select)和15位bigint,我会优先考虑非聚集索引. 可以尝试2个non-cluster 或者一个combined non-cluster

关于是否建立primary key 和 cluster index, 恐怕你会建立在IMSI 这列吧. primary key只是约束,不影响性能. cluster index是物理排序的,在一种情况下会影响性能,如果你随机  insert 而不是顺序insert,那么每次insert 后, cluster index都要排一次序, 会慢很多, 如果有non-cluster, cluster index 同时存在,就更慢了,这就是为什么insert 要停掉index. 同时cluster index帮助non-cluster 加快lookup, 而不用走heap SID lookup, 一定程度加快点delete 动作.

数据量还是挺大的,那么可以按a列建立非聚集索引,然后再按b列也建立非聚集索引
要加主键的话可以考虑加一列自增ID,那两列更新频繁的话就别加主键了,加个复合索引试试

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    TClientDataSet如何避免多人更新
    如何用delphi代码修改XML节点
    vc++ pvoid *用delphi怎么表达
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    如何用delphi代码修改XML节点
    vc++ pvoid *用delphi怎么表达
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    sqlserver游标慢怎么办
    SQL SERVER 2000 作业节假日
    如何同时查询2个库的表进行对
    excel连接mssql2012中文乱码
    sqlserver判断一张表的某个字
    sql server 2008R2如何实现自
    sqlserver新增一列自动获得当
    托管的SQL Server 数据类型S
    sqlserver数据列如何判断每天
    Microsoft SQL Server Manag
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |