【发布时间】:2011-09-20 07:09:12
【问题描述】:
在具有 id、几个键值和几个其他“数据”列的表中:
T1 : id , k1 , k2 , k3 , data1, data2, ...
id 是唯一的。
k1 有数百个不同的值。
对于 k1 的每个不同值,k2 都有数千个不同的值。
对于 k1,k2 的每个不同组合,有几十行(或多一点),其中通常 k3 是所有这些记录的空字符串,而其他一些 k3 值每个 (k1,k2) 只会出现一次,并且偶尔会出现两三次。
我要获取一组记录where k1=K1V and K2=K2V and K3=K3V,
但我也知道这相当于询问where k1=K1V and K3=K3V 或where k2=K2V and K3=K3V,因为 K2 的任何特定值将始终具有相同的 K1 值。
或者我应该问一下where K3=K3V and K2=K2V and K1=K1V或where K3=K3V and K1=K1V或where K3=K3V and K2=K2V? (因为K3列的空字符串值的忏悔)。
进行此查询的最佳方法是什么?我应该为此创建什么索引?
如果已知 K1 的不同值上 K2 的不同值的数量差异很大,它会改变答案吗? (即,一些 K1V 有 5 个 K2V 与之相关联,而另一些则有 100 个)
【问题讨论】:
标签: database database-design indexing