ここで2つのかなり大きなテーブルにクエリを実行して、いくつかの結果を取得しようとしていますが、効率に問題があります。
注:これをそれほど乱雑に見せないように、関連する列のみを含めました。
TableA(在庫)には、productID、ownerID、およびcount列があります
TableB(所有者)には、ID、accountHolderID、および名前の列があります
私がやろうとしているのは、TableAにクエリを実行することです。ここで、productID = Xは、Stock.productID、Stock.accountHolderID、およびOwners.nameをプルアップします。これら2つのテーブル間の関係はStock.ownerID=Owners.IDであるため、WHERE条件が5つのproductIDを取得した場合、TableAのownerIDと一致するTableBの名前が必要になります。
この状況での唯一の一意のIDは、TableBのOwners.IDです。
これらの製品に対してTableAで基本的なSELECTクエリを実行するだけで15秒かかりますが、TableBに一致するようにINNER JOINを追加すると、クエリにかかる時間が大幅に長くなり、10分以上かかります。このクエリを非効率的に設計したと思います。
SELECT
Owners.name,
Stock.productID,
Stock.ownerID
FROM Stock
INNER JOIN
Owners
ON Stock.ownerID = Owners.ID
WHERE
Stock.productID = 42301679
このクエリをより効率的にするにはどうすればよいですか?
WHERE条件にORを追加すると、一度に複数のproductIDを取得できますか?