当前位置: 首页 > 面试题库 >

避免在子句中不使用SQL

宦正诚
2023-03-14
问题内容

我有下面列出的3个表:

Blog    BlogArticle  Article
----    -----------  -------
        id
id------blog_id      -id
title   article_id__/ title

该SQL描述了我想要的:

SELECT * 
FROM  `article` 
WHERE  `article`.`id` NOT IN (
        SELECT CONCAT(`blog_article`.`article_id`) 
        FROM  `blog_article` 
        WHERE  `blog_article`.`blog_id` = 1 -- example value
       )

问题是,在这种情况下,我有一个很大的NOT IN值,据我所知它将影响服务器性能(我不确定,因为我从未尝试对其进行基准测试或Google评估)。有什么建议吗?


问题答案:

试试这个 :

SELECT * 
FROM  `article` 
LEFT JOIN `blog_article` ON CONCAT(`blog_article`.`article_id`) = `article`.`id`
                            AND  `blog_article`.`blog_id` = 1 -- example value
WHERE `blog_article`.`article_id` is null --replace the not in


 类似资料:
  • 问题内容: 我已经读过(例如,从Martin Fowler那里),我们应该在OOP的(短)方法中使用保护子句而不是单返回。我还读过(从我不记得的地方)应尽可能避免使用else子句。 但是我的同事(我在一个只有3个人的小团队中工作)迫使我不要在一个方法中使用多个返回值,而要尽可能使用else子句,即使else块中只有一个注释行。 这使我很难遵循它们的编码风格,因为例如,我无法在一个屏幕上查看方法的所

  • 问题内容: 我已经编写了类似这样的方法。但是我猜这应该进行重构。谁能建议最好的方法来避免使用多个if语句? 我在这里不能使用大小写转换,因为我的“条件”是。 问题答案: 您可以使用来保存您的解决方案: 为了使此代码起作用,您需要像在类中那样进行定义和定义,如下所示:

  • 问题内容: 建议在HTML页面中使用表格(现在已经有了CSS)? 表格有什么用途?表具有哪些CSS所没有的功能? 问题答案: 一点都不。但是将表格用于表格数据。只是不要将它们用于一般布局。 但是,如果您显示表格数据(例如结果或什至是表格),请继续使用表格!

  • 问题内容: 我有以下(也许是常见的)问题,此刻绝对使我感到困惑: 有几个生成的事件对象扩展了抽象类,我想将它们划分为Session Bean,例如 但是将来可能会有两种以上的事件类型,因此if- else将会很长,甚至可能无法读取。另外,在这种情况下,我认为这并不是真正的“最佳实践”。 我可以在类型中添加一个抽象方法,并让它们自行划分,但随后我必须在每个实体中注入特定的Session Bean。

  • 问题内容: 具有“ instanceof”操作链被认为是“代码异味”。标准答案是“使用多态性”。在这种情况下我该怎么办? 基类有许多子类。他们都不在我的控制之下。类似的情况是Java类Integer,Double,BigDecimal等。 我确实可以控制等。 我不想使用几行代码就能完成的代码。(有时,我制作了一个HashMap将映射到的实例,将映射到的实例,等等。但是今天我想要一些更简单的方法。)