我有两张table
表1包含500000条主键列id为的记录
表2包含300 000条主键列id为的记录
表2有重复项,它在列id上被索引。
我正在尝试执行下面的查询
select
field1,
field2,
field3
from
table2
where
id in (select id from table2 where condition1='xx' and condition2='yy')
如果我在操作符条件中把id作为固定值
同样地
select
field1,
field2,
field3
from
table2
where
id in ('id1','id2','id3','id4'......'idxx')
我收到一个错误/警告。
我想知道是否有任何替代使用in运算符来提高查询性能的方法。
2条答案
按热度按时间svgewumm1#
假设在第一个查询中有一个类型
table2
我们应该读一读table1
,您可以使用EXISTS
以及相关子查询。SELECT field1,
field2,
field3
FROM table2
WHERE condition1='xx'
AND condition2='yy';
iovurdzv2#
为了提高性能,可以使用内部连接
并尝试在表2上使用复合索引(condition1,condition2,id)