我有一个表,我一直访问2个int字段,所以想要一个索引来帮助。从来没有写过。 int字段不是唯一的。
什么是最佳指数?
Table
MyIntA
MyIntB
SomeTextValue
查询总是如下所示:
Select SomeTextValue from MyTable where MyIntA=1 and MyIntB=3
答案 0 :(得分:3)
您可以在(MyIntA, MyIntB)
上添加索引。
CREATE INDEX your_index_name ON MyTable (MyIntA, MyIntB);
注意:如果列对(当一起考虑时)仅包含不同的值且主要没有其他明显的选择时,最好将这对列作为主键键。
例如,如果您的表仅包含如下数据:
MyIntA MyIntB
1 1
1 2
2 1
2 2
如果单独考虑MyIntA
和MyIntB
,不唯一,那么这些列都不能单独用作主键。但是,(MyIntA, MyIntB)
对唯一,因此这对列可以用作主键。
答案 1 :(得分:1)
MyIntA和MyIntB列中数据的选择性(离散/不同值的数量)应该可以帮助您确定您的索引应该是(MyIntA,MyIntB),(MyIntB,MyIntA)还是仅仅(MyIntA)或(MyIntB)
这个link应该有所帮助,尽管对于不同的RDBMS