【问题标题】:Is there any other way to fire this query有没有其他方法可以触发这个查询
【发布时间】:2012-06-28 11:47:37
【问题描述】:
SELECT CategoryID, CategoryName
FROM testcategory
WHERE CategoryID NOT 
IN (
  SELECT ChildMuzeCategoryID
  FROM testsubcategory
)

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

【问题讨论】:

标签: mysql


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    由于在处理大量行时,如果您有一些像 testsubcategory 这样的标志并在更新 testsubcategory 表时将其更新为 1 (boolean) 会更好。我们可以很容易地使用这个查询:

    SELECT `CategoryID`, `CategoryName` FROM `testcategory` WHERE NOT `testsubcategory` = 1;
    

    【讨论】:

      【解决方案3】:

      尝试使用join:

      SELECT CategoryID, CategoryName
      FROM testcategory
      LEFT JOIN testsubcategory ON testcategory.CategoryID = testsubcategory.ChildMuzeCategoryID
      WHERE testsubcategory.ChildMuzeCategoryID IS NULL
      

      【讨论】:

      • 没错!使用 JOIN 的查询比使用 IN 的查询执行得快很多。
      • SELECT STRAIGHT_JOIN Reference会更快
      • 感谢它比上一个快,但总体上仍然很慢。有没有什么办法可以通过其他方式来处理这个脚本...我听说过 Hive SQL..
      猜你喜欢
      • 2021-09-06
      • 2012-12-06
      • 2022-01-05
      • 2020-05-11
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多