質問: 最大日付を持つgroup by このコードを実行すると問題が発生します。select * from tblpm n where date_updated=(select max(date_updated) from tblpm group by control_number having control_number=n.control_number) 基本的に、各管理番号の最新の日付を返します。上記のクエリは正しい出力を返しますが、37秒かかります。出力が表示される前。上記のクエリよりも高速に実行できる他のsql句またはコマンドはありますか?前もって感謝します。
回答: サブクエリをwhere句に入れてn.control_numberに制限すると、サブクエリが何度も実行されます。これは、相関サブクエリと呼ばれ、多くの場合、パフォーマンスを低下させます。from句でサブクエリを1回実行して、コントロール番号ごとの最大日付を取得することをお勧めします。select n.* from tblpm n inner join ( select control_number, max(date_updated) as date_updated from tblpm group by control_number ) as max using (control_number, date_updated);