高效多参数搜索的数据结构

3
我有一组多维对象(例如class Person = {age:int,height:int,weight:int等} )。 我需要使用查询来查询某些维度固定而其余未指定的集合(例如getallPersonWith {age = c,height = a} getAllPersonWith {weigth = d} ...)
现在,我有一个多映射表,其中包含{age,Height,...} (例如可以固定的所有维度) - > List:Person 。 要执行查询,我首先计算验证查询的键的集合,然后合并地图中对应的列表。 有没有更好的方法,就查询速度而言? 特别是是否有任何更接近按维度排序的单个排序列表的解决方案(我认为这是最快的解决方案,但太麻烦了:))
只是为了明确,我不是在寻找SQL查询。

你是否已经有特定的SQL表结构想法,还是现在只是盲目尝试? - Jester
我不能使用SQL,因为那些是内存临时对象。我想要一些轻量级和简单的东西。 - GreyGeek
你用哪种编程语言?C++? - Jester
1
你看过这个网站了吗:http://code.google.com/p/cqengine/? - Jester
@Jester 谢谢,为什么不回答一下,这样我就可以给你点赞了 :) - GreyGeek
欢迎您。请在下面回答 :) - Jester
2个回答

3

0
你的意思是像这样吗:
SELECT * FROM person p
WHERE gender = 'F'
  AND age >=18
  AND age < 30
  AND weight > 60 -- metric measures here !!
  AND weight < 70
  AND NOT EXISTS (
    SELECT * from couple c
    WHERE c.one = p.id OR c.two=p.id
    );

你觉得我为什么要使用SQL?


对于子查询,一个列在性能方面应该更好:AND NOT EXISTS ( SELECT ID from couple WHERE c.one = p.id OR c.two=p.id ); - Jester
2
胡说八道。查询优化器会看到只需要布尔值,因为外部查询不会引用任何“*”。 - wildplasser
所有的数据库管理系统都是以这种方式工作的查询优化器吗? - Viktor Stolbin
1
关于查询优化器:聪明的会做,愚蠢的不会。这是一个实现相关的问题。根据实现方式,你也可以尝试使用 select 1 或者 select True,也许实现方式会理解它们。任何方法都可以尝试... - wildplasser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接