0

次のクエリを改善することは可能ですか:

SELECT * 
FROM   search s left join search_criteria sc ON s.id = sc.search_id
WHERE  sc.deleted_at IS NOT NULL 
AND    s.id NOT IN
        (  SELECT s.id
           FROM   search s
                    left join search_criteria sa ON s.id = sc.search_id
           WHERE sc.deleted_at IS NULL
        )
GROUP BY s.id

ありがとう

4

3 に答える 3

0

これを試して ::

SELECT * 
FROM   search s
          left join search_criteria sc ON s.id = sc.search_id
          left join kelformation.search ks on (s.id=ks.id)
          left join search_criteria sa ON ks.id = sa.search_id
WHERE  sc.deleted_at IS NOT NULL and sc.deleted_at IS NULL 
AND    /*Primary key of kelformation.search */ is null
GROUP BY s.id
于 2012-06-19T10:06:46.810 に答える
0

それは依存します-デフォルトのデータベースがkelformationの場合、クエリは次のように効果的に簡素化されると思います:

SELECT  * 
FROM    search s left join search_criteria sc ON s.id = sc.search_id
WHERE   sc.deleted_at IS NOT NULL 
GROUP BY s.id
于 2012-06-19T09:51:17.190 に答える
0

次のシナリオについて考えてみましょう。

あなたはビー玉でいっぱいの箱を持っています。何が速くなりますか?

  • 箱全体を見せる (テーブルにこぼすだけ)

  • または、緑色の点のあるビー玉のみを表示します (表示する前に、個々のビー玉を調べる必要があります)。

さて、除外しなければならないようですので、それで行かなければなりません。
MySql には内部クエリに関する問題があります。これを LEFT JOIN に変更する必要があります。
より詳細な回答のためにスキーマを提供してください。

于 2012-06-19T09:52:41.190 に答える