如何优化以下Oracle SQL查询

时间:2018-07-18 10:48:58

标签: sql query-optimization

我具有以下数据库结构

@Entity
@Table(name = "record")
public class SearchRecord {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int id;
private String vidName;
@ElementCollection
private List<String> videoLabels = new ArrayList<String>();

,并希望运行一个Hibernate查询,以过滤出所有匹配/包含1..n videoLabels的SearchRecords。 (仅与所有videoLabel匹配的对象!)

我想出了以下解决方案-在这种情况下,匹配五个标签名称

SELECT DISTINCT a
FROM SearchRecord a JOIN
     a.labels b JOIN
     a.labels c JOIN
     a.labels d JOIN
     a.labels e JOIN
     a.labels f
WHERE b.name = 'Fire alarm' and
      c.name = 'Speech' and
      d.name = 'bus' and
      e.name = 'cup' and
      f.name = 'dog' 

对于这种具有五个联接操作的方案,我想这是最糟糕的查询。有没有办法优化查询?

0 个答案:

没有答案