0
SELECT CategoryID, CategoryName
FROM testcategory
WHERE CategoryID NOT 
IN (
  SELECT ChildMuzeCategoryID
  FROM testsubcategory
)

第一个表包含 75k 第二个表包含 45k 记录

4

3 回答 3

4

尝试使用加入:

SELECT CategoryID, CategoryName
FROM testcategory
LEFT JOIN testsubcategory ON testcategory.CategoryID = testsubcategory.ChildMuzeCategoryID
WHERE testsubcategory.ChildMuzeCategoryID IS NULL
于 2012-06-27T04:47:28.213 回答
0

这个查询非常好,没有办法重写它实际上会使其性能更好。

于 2012-06-27T04:46:23.687 回答
0

你写的是最好的方法,没有更好的方法,但我有一个建议:

因为在处理大量行时,如果你有一些类似的标志testsubcategory1 (boolean)在更新testsubcategory表时更新它会更好。我们可以很容易地使用这个查询:

SELECT `CategoryID`, `CategoryName` FROM `testcategory` WHERE NOT `testsubcategory` = 1;
于 2012-06-27T04:46:27.323 回答