SQL语句 如何查找一张表里两个字段符合条件的内容

假如一张表有字段A和字段B,我需要在表中查找满足(A=x1,B=y1),(A=x2,B=y2)……这样的数据。
如何去写SQL语句,因为数据量比较大(几十万条记录),用怎样的语句执行效率会高一点?烦请高手指点。

大数据查询跟字段是否有索引也有关系的
1、select *
from test
where a in ('x1','x2') and b in ('y1','y2')

不知道是不是要这样的追问

不是的,你这个查询的话,查出来的是(x1,y1)(x1,y2)(x2,y1)(x2,y2)四种可能。
但是我想要的只有(x1,y1)和)(x2,y2)。
SQL SERVER里面是不是除了select * from table where (A = x1 AND B = y1) OR (A = x2 AND B = y2)这种方式之外就没有别的方式了?

追答

如果存在索引的情况下,你可以把你的and条件换成union all,可能会快点,其他也就没什么了

追问

AND换成union all?能写个例子么?

追答

select * from table a=x1
union all
select * from table b=y1

追问

假如有4个数据(x1,y1)(x1,y2)(x2,y1)(x2,y2)
select * from table where a=x1
取到(x1,y1)(x1,y2)
select * from table where b=y1
取到(x1,y1)(x2,y1)
确定是用Union All而不是Intersect?

追答

你是oracle数据库?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-05
首先不能确定要查询多少次,所以只能用循环查询
从效率方面考虑,应该用存储过程,参数传2个数组,返回一个结果集
另外对于这两列数据也要创建索引
第2个回答  2015-03-05
问题比较模糊!\r\n请举例说明要解决的问题: 把两个表结构列出来, 再列出查询需求