明らかに、問題はクエリがインデックススキャンを実行していることです。別のアプローチは、同じ最初と最後の値に対して2つのインデックス検索を実行し、計算のためにインデックスのメタ情報を使用することです。あなたの観察に基づいて、MySQLは両方を行います。
この答えの残りは推測です。
パフォーマンスが200,000倍遅くなるのではなく、「わずか」300倍遅くなる理由は、インデックスの読み取りのオーバーヘッドが原因です。実際にエントリをスキャンすることは、必要な他の操作と比較して非常に高速です。
比較に関しては、数値と文字列には根本的な違いがあります。エンジンは、2つの数値のビット表現を調べて、それらが同じか異なるかを認識することができます。残念ながら、文字列の場合、エンコーディング/照合を考慮する必要があります。だからこそ、価値観を見極める必要があると思います。
正確に216,000部ある場合は可能性があります 同じ文字列の場合、MySQLはインデックスのメタデータを使用してカウントを実行できます。言い換えると、インデクサーは、正確な同等性の比較にメタデータを使用するのに十分なほど賢いです。ただし、エンコーディングを考慮に入れるほど賢くはありません。