我有一个关于索引列的问题,这里是
我有一个包含3列数据类型的表,如下所示。
VARCHAR(255) --- Have many duplicates (say 10% unique records)
VARCHAR(64) --- Have many duplicates (say 10% unique records)
VARCHAR(MAX) --- Surely can’t choose this COL as key col for index
如果我想在此表上创建索引,在这种情况下我该怎么做?
OR
我应该创建一个自动增量列吗?
你能帮我解决这个问题吗?谢谢, 拉胡
答案 0 :(得分:0)
如果您愿意,可以在每个列上创建索引,如果它们具有唯一数据则无关紧要。
索引用于在索引列上更快地检索信息,搜索和过滤。
索引也可以应用于列(字段)的组合。
所以,你可以在field1上添加一个索引,在field2上添加另一个索引,在field3中添加另一个,在(field1,field3)组合中添加另一个,等等。什么是最好的,取决于你计划用表做什么用途。
另一方面,如果您要创建Primary Key
而不是index
:
选择主键列:
该列必须唯一标识每一行(因此,您不能使用具有重复项的field1或field2)。
如果它尽可能小,那就更好了,所以当在其他表中用作外键时,它不会占用太多空间(以及其他原因)。所以,你最好不要使用field3 - 尽管你可以在测试数据库或小型数据库中执行此操作,或者如果您不关心性能。
所以,是的,我的建议是添加另一个自动增量列并将其用作主键。
至于唯一索引:
创建主键时,也会创建该字段的唯一索引。
您也可以(或没有主键)在字段(或其组合)上创建唯一索引。在字段1和2具有重复项的情况下,您可以在field3上创建唯一索引,或者在其上添加自动递增字段和唯一索引。