私は2つのテーブルを持っています。people
16500 行、visits
17000 行のテーブル。visits
にリンクする必要があるため、クエリに LEFT JOIN が含まれていますpeople
。訪問記録のない人物記録がある場合、それらの訪問列は NULL になることを認識しています。
この単純なクエリは魔法のように機能します。
SELECT * FROM people LEFT JOIN visits ON people.id = visits.id_people;
しかし、返された行をカウントしようとすると、 MySQL が30 秒以上、またはkill するまでハング(またはカウント)します。これは本番環境では受け入れられません。
結果の行をカウントするために使用しようとしたさまざまな方法を次に示しますが、それらはすべて同じハング結果になります。
SELECT COUNT(*) FROM people LEFT JOIN visits ON people.id = visits.id_people;
SELECT SQL_CALC_FOUND_ROWS * FROM people LEFT JOIN visits ON people.id = visits.id_people;
SELECT FOUND_ROWS();
奇妙なのは、これらのメソッドが小さなテスト テーブル (5 行と 5 行) で正常に機能していることです。
誰でも助けることができますか?