ホームページ >データベース >mysql チュートリアル >MySQL の履歴テーブルから最新の行を効率的に結合するにはどうすればよいですか?

MySQL の履歴テーブルから最新の行を効率的に結合するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-02 15:39:40486ブラウズ

How to Efficiently Join the Most Recent Row from a Historical Table in MySQL?

MySQL の最新の行の結合

customer と customer_data という 2 つのテーブルがあり、後者には顧客の変更履歴が含まれている場合、当面のタスクは取得することです。 customer_data の最新のエントリのみが customer テーブル内の各顧客に結合されるようにしながら、顧客情報を確保します。

これを実現するには、メインのクエリ本体の代わりに WHERE 句を使用すると、パフォーマンスが向上し、コードが読みやすくなります。最適化されたクエリは次のとおりです。

SELECT c.*,
       CONCAT(title, ' ', forename, ' ', surname) AS name
FROM customer c
LEFT JOIN customer_data d
ON c.customer_id = d.customer_id
WHERE d.customer_id = (
    SELECT MAX(customer_id)
    FROM customer_data
    WHERE customer_id = c.customer_id
)
LIMIT 10, 20;

このクエリは、WHERE 句内でフィルタリングすることにより、customer_data の最新の行のみが customer 内の各顧客に対して結合されるようにします。 LEFT JOIN を使用すると、customer_data に対応するエントリがない場合でも、customer のすべての顧客が結果に含まれるようになります。

CONCAT と LIKE を一緒に使用することに関する懸念については、そのとおりです。 CONCAT は文字列を連結し、その結果の文字列を LIKE 演算子とともに使用してパターン マッチングを実行できます。その点ではあなたのクエリは有効です。

以上がMySQL の履歴テーブルから最新の行を効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。