我向谷歌求助,但仍感到困惑。
1)在索引Varchar列时是否存在问题?何时应该做,何时不应该做。
2)索引char列与Varchar列的区别。
谢谢。
我向谷歌求助,但仍感到困惑。
1)在索引Varchar列时是否存在问题?何时应该做,何时不应该做。
2)索引char列与Varchar列的区别。
谢谢。
1 - 如果您要查询某个字段并且它足够具有选择性,请将其索引。如果该列的90%值相同,则没有太多意义。
2 - 这不是一个问题,但我猜您想知道是否应该这样做。是的,如果您查询它并且符合上述条件。
varchar
最多只有50个字符,否则不要使用。char
与varchar
的真正区别在于固定大小与可变大小(即char(100)
在数据页中始终占用100个字节,而varchar(100)
最多占用100个字节)。一般性能
在理论/设计中,您有一个逻辑模型,例如,用户名是唯一的。
然而,在实现时,您知道使用它是昂贵的(大小写、重音、长度等),与使用更有效的索引作为替代的“用户ID”列相比。话虽如此,您仍会在名称上建立索引,因为它应该是唯一的。
区别在于您使用此索引的位置:如果它在子表中作为外键列,则不是一个好主意。或者作为聚集索引。
对于没有FK的表的单个索引,那么这既不是这里也不是那里。
最后,我只会使用char / varchar之类的东西来表示ISO语言或货币代码(DE,EN,GBP,CHF等)。但是我的截止时间老实说是不同的...