1
これらはすべてcronジョブPHPとして動作していますが、動作していますが、遅くなると思われ、効率的だとは思いません。 5つのクエリがあり、その背後にある基本的な考え方は、新しいSKUをテーブルに見つけてMasterSKUテーブルに挿入することです。複数の表から1つの問合せへの複数の挿入および選択文?
INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM AmazonListings
WHERE NOT EXISTS (SELECT SKU
FROM MasterSKU
WHERE AmazonListings.SKU = MasterSKU.SKU);
INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM ShopifyListings
WHERE NOT EXISTS (SELECT SKU
FROM MasterSKU
WHERE ShopifyListings.SKU = MasterSKU.SKU);
INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM eBayListings_1
WHERE NOT EXISTS (SELECT SKU
FROM MasterSKU
WHERE eBayListings_1.SKU = MasterSKU.SKU);
INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM eBayListings_2
WHERE NOT EXISTS (SELECT SKU
FROM MasterSKU
WHERE eBayListings_2.SKU = MasterSKU.SKU);
INSERT INTO MasterSKU (SKU)
SELECT DISTINCT SKU
FROM eBayListings_3
WHERE NOT EXISTS (SELECT SKU
FROM MasterSKU
WHERE eBayListings_3.SKU = MasterSKU.SKU);
次に、PHPスクリプトで1つずつ、mysqli_query
を使用して個々のクエリを実行します。
これらのすべてをグルーピングすることはできますか。すべてが同じテーブルに入っていますが、FROM
異なるテーブルはありますか?またはこれを行うためのより良い、より最適化された方法がありますか?
それはそう時間はかかりませんので、私は、実際のクエリを最適化することができない場合は、それがあることを要する場合(クエリは34.7357秒を要した) '..疑問に思う働いたが、クエリは永遠にかかった...'はい(クエリが2.6736秒を要した) ' – bbruman
テーブルに重複しているskusがない場合は、単純なunionの代わりに' union all'を使います。それはクエリを高速化します。 – Shadow
'(クエリは29.4768秒かかりました)'に降格しましたが、とにかく、テーブルに重なっているskusがあります。 'unique'カラムを持つ唯一のものは' MasterSKU'テーブルのSKUです。 – bbruman