SELECT CategoryID, CategoryName
FROM testcategory
WHERE CategoryID NOT
IN (
SELECT ChildMuzeCategoryID
FROM testsubcategory
)
最初のテーブルには 75k のレコードが含まれています 2 番目のテーブルには 45k のレコードが含まれています
SELECT CategoryID, CategoryName
FROM testcategory
WHERE CategoryID NOT
IN (
SELECT ChildMuzeCategoryID
FROM testsubcategory
)
最初のテーブルには 75k のレコードが含まれています 2 番目のテーブルには 45k のレコードが含まれています
参加を使用してみてください:
SELECT CategoryID, CategoryName
FROM testcategory
LEFT JOIN testsubcategory ON testcategory.CategoryID = testsubcategory.ChildMuzeCategoryID
WHERE testsubcategory.ChildMuzeCategoryID IS NULL
このクエリは完全に問題ありません。実際にパフォーマンスを向上させるような書き直し方法はありません。
あなたが書いたことは最善の方法であり、これ以上の方法はありませんが、私には提案があります。
testsubcategory
大量の行を処理する場合は、のようなフラグがあり、テーブル1 (boolean)
の更新中に更新するとよいでしょう。testsubcategory
そして、このクエリを簡単に使用できます。
SELECT `CategoryID`, `CategoryName` FROM `testcategory` WHERE NOT `testsubcategory` = 1;