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

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

2024-10-17 14:17:28

大数据查询跟字段是否有索引也有关系的
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数据库?
靉哥哥旳文

2024-10-17 10:30:27

首先不能确定要查询多少次,所以只能用循环查询
从效率方面考虑,应该用存储过程,参数传2个数组,返回一个结果集
另外对于这两列数据也要创建索引
野港

2024-10-17 10:17:39

问题比较模糊!\r\n请举例说明要解决的问题: 把两个表结构列出来, 再列出查询需求