[问与答] SQL 求助,如何同时搜索两列数据的多种情况?

业务上有一张表示对象分科目成绩的表,大概结构就是 主键自增 ID 、科目名,科目成绩,对象 ID 这四项,业务上搜索需要搜索,比如“搜索科目 1 成绩为 90,91,92,93,94,95 的所有对象 ID”

SQL 目前是按下面这样写的

SELECT objid FROM SCOTT.SCORES WHERE subject = 1 AND score IN (90,91,92,93,94,95) 

但是遇到如果需要同时搜索不同科目的话,比如同时对科目 1 的成绩和科目 2 的成绩有要求,就需要拆成多个搜索语句,目前是这么写的

SELECT DISTINCT objid FROM ( SELECT objid FROM SCOTT.SCORES WHERE subject = 1 AND score IN (90,91,92,93,94,95) UNION SELECT objid FROM SCOTT.SCORES WHERE subject = 2 AND score IN (60,70,90) UNION SELECT objid FROM SCOTT.SCORES WHERE subject = 3 AND score IN (75,85)
) AS tmp

感觉非常麻烦,请问有什么放到一句话里的写法吗?

目前是在表里针对 subject 的值进行了分区,然后对 subject 和 score 建立了一个联合的普通索引,性能上还有能优化的地方吗?谢谢大家