想在sql中发以下数据
一组string,叫key吧,需要一个个遍历
另外一组string,叫value吧,也需要一个个遍历
key和value是多对多映射关系,一个key可能有多个value,一个value也可能有多个key现在的要求是,1)上面说的遍历
2)从一个key得到对应的value要快,从一个value,得到有多少个key对应着它,也要快是不是很简单?
怎样设计了?这样查询比较快?我是个sql盲,希望说的详细的,加分好说。
一组string,叫key吧,需要一个个遍历
另外一组string,叫value吧,也需要一个个遍历
key和value是多对多映射关系,一个key可能有多个value,一个value也可能有多个key现在的要求是,1)上面说的遍历
2)从一个key得到对应的value要快,从一个value,得到有多少个key对应着它,也要快是不是很简单?
怎样设计了?这样查询比较快?我是个sql盲,希望说的详细的,加分好说。
key varchar(30),
value varchar(30),
constraint pk_t primary key (key,value)
)然后分别对KEy vALuE建索引
然后再对表key的key字段建索引,表value的value字段建索引,key_value表中的key_id,value_id做为主键要求1时用基本表,2时用派生表
create table bo_operastar (
id int not null primary key,
otherAttribs text
);
create table bo_fans (
id int not null primary key,
otherAttribs text
);
create table rl_operastar_fans (
oid int not null,
fid int not null,
pri key pk_osfans (oid, fid)
);
select fid as id from rl_operastar_fans where oid=@oid-- for getFanOperastars(fid):
select oid as id from rl_operastar_fans where fid=@fid
这个问题是多对多的数据模型,用三范式设计,你可以为KEY建立一张表,为VALUE建立一张表,为他们的关系建一张表。
kEY表建索与主键,VALUE表建索引与主键,关系表存对应关系。
比如:KEY表如下
id keyid keyname
1 a aname
2 b bname
3 c cname
VALUE表如下
id valueid valuename
1 a1 a1nme
2 a2 a2name
3 a3 a3name
那么关系表如下
id key value
1 a a1
2 a a2
3 b a1
4 b a3
5 c a1
其中,keyid建立索引,valueid建立索引。且各自是主键。当然,前面的id并不是主键,只是易个序号,不是自增的主键啊。