我问谷歌,但我仍感到困惑。
1)索引Varchar列是否存在问题。当我不应该,当我应该
2)索引一个char列VS Varchar列。
由于
答案 0 :(得分:4)
1 - 如果你正在查询它并且它有足够的选择性,请将其编入索引。如果它是一个90%的值相同的列,则没有多大意义。
2 - 这不是一个问题,但我猜你想知道你是否应该这样做。是的,如果您查询它并且它符合上述标准。
答案 1 :(得分:4)
varchar
最多约50个字符,否则不要char
与varchar
之间的真正区别是固定大小与可变大小(即char(100)
)在数据页中始终占用100个字节, varchar(100)
最多需要100)答案 2 :(得分:0)
一般表现
在理论/设计中,你有一个逻辑模型,比如说,用户名是唯一的。
然而,在实现时,你知道使用这个是昂贵的(情况,重音,长度等)与使用代理“userid”列相比,后者作为索引更有效。这么说,无论如何你都有一个名字索引,因为它应该是唯一的。
区别在于您使用此索引的位置:如果它在子表中作为外键列,则不是一个好主意。或者作为聚集索引。
作为没有FK的表的单个索引,那么它既不在这里也不在那里。
最后,我只是将char / varchar用于ISO语言或货币代码(DE,EN,GBP,CHF等)。但我的截止不一样诚实......