最も可能性の高い説明は、その述語を追加するときにMySQLが別の実行プランを選択しているということです。
2つのクエリのEXPLAIN出力を比較できます。1つはjourney_day.day=3
です。 述語と述語なし。
MySQLは別の結合順序を選択しており、MySQLはday
を持つインデックスを使用することを選択していると思います。 述語が含まれている場合の先頭の列として。そして、おそらくそれがより多くの行にアクセスして調べられる原因になっている、あるいはMySQLが行を除外する前に大きな中間セットを生成している可能性があります。