【发布时间】:2015-01-19 16:48:25
【问题描述】:
我有资源,每个资源都由一个 guid 表示,并且它们具有属性名称-值对。我想查询 对于具有给定属性名称值对的资源。
所以,假设表格如下:
GUID ATTR_SUBTYPE ATTR_VAL
63707829116544a38c5a508fcde031a4 location US
63707829116544a38c5a508fcde031a4 owner himanshu
44d5bf579d9f4b9a8c41429d08fc51de password welcome1
44d5bf579d9f4b9a8c41429d08fc51de host retailHost
c67d8f5d1a9b41428f029d55b79263e1 key random
c67d8f5d1a9b41428f029d55b79263e1 role admin
并且我想要位置为 US 且所有者为 olaf 的所有资源。
一个可能的查询是:
select guid from table where attr_subtype = 'location' and attr_value = ‘US'
INTERSECT
select guid from table where attr_subtype = 'owner' and attr_value = ‘himanshu';
查询中可以有任意数量的属性名称值对,因此每对都有一个额外的交集 在查询中。我想知道我们是否可以构建一个更好的查询,因为交集很昂贵。
【问题讨论】: