我有下表(简化,删除了不需要的列):
包交易
| memberID | subscriptionType |
| ==========|===================|
| 12345 | 101 |
| 12345 | 203 |
| 12346 | 101 |
| 12347 | 101 |
| 12348 | 101 |
| 12348 | 203 |
| 12349 | 203 |
| 12345 | 205 |
我想查询所有没有 subscriptionType
= 101的记录,但只有那些subscriptionType
= 101的记录相同的记录memberID
存在。
因此,我使用:
SELECT memberID, subscriptionType
FROM packageTransactions
WHERE memberID IN
( SELECT memberID
FROM packageTransactions
WHERE subscriptionType = '101'
)
AND subscriptionType <> '101'
;
这给了我正在寻找的结果集:
| memberID | subscriptionType |
| ==========|===================|
| 12345 | 203 |
| 12348 | 203 |
| 12345 | 205 |
但是,当在具有几千条记录(在我的情况下为 +30k)的表上使用此查询时,需要几分钟才能返回结果。
所以我想知道,是否有一种“更好” /更有效的方式来查询数据?