今天有人跟我说,在mssql-2005里面,bigint的索引比varchar(20)的索引快。
由于我不是很了解mssql,特来发问,求解答!
(同一个字段,就设计成bigint类型或设计成varchar类型有不同的见解)-------------------------------------------------
我之前是用Oracle的,之前的项目,4千w的数据表,走varchar的索引都没觉得慢过。。(该字段varchar类型,是个key)

解决方案 »

  1.   

    bigint 占 8 个 byte.varchar(20) 最长可占到 20 个byte.1).每个index page能装载bigint的key的数目比varchar多.2).基於数值的比较运算比字符串比较快.
      

  2.   

    问题是这个项目是需要从别的系统导入数据的。而别的系统对应这个字段的类型是一个varchar我看过源头数据,对应的varchar里面是有字母的。所以我很反对这个字段设置为bigint
      

  3.   

    个人认为还是不要一概而论的好:例如:
    如果存的数据是1-99999999
    那么varchar(20)不一定会比bigint慢。bigint始终占8字节,而varchar(20)则是从1至8字节,在存储上varchar(20)占用page更少。
      

  4.   


    有字母的当然只能用varchar了................orz
      

  5.   

    所以因为设计了目标表是bigint,现在为了就这个设计,又要我中间维护一张表,记录varchar与bigint的mapping关系,根据这表找到对应的bigint字段写入表中。
    我感觉这设计真的是一塌糊涂我又是新来的员工,不好说什么。
      

  6.   


    这个字段主要是存放什么数据? 如果99%都是数值,那考虑bigint的为好.如若不然,还是保值原来的设计的吧,不要瞎折疼。
      

  7.   

    一个key,说白了是字符串,是99%是数字和字母的组合!
    我现在活都停下了,等讨论完这个东西才开工。不然真的瞎搞。另外公司有2张表,一张是标题表,一张是内容表。
    他们做的时候居然不做关联,页面展示标题的地方只直接从标题表查,不关联内容表。结果
    就是由于数据质量原因,有些标题点进去后是空的(对应的内容表没记录)我问为什么不关联,他们说关联了性能慢。。我很奇怪两张表,一个主外键的关联也会慢
    (千w级别数据表)我现在都怀疑是我不行还是这里不行真他妈迷茫了