最近、いくつかの遅いクエリに出くわしたとき、EXPLAINプランでこの「usingsort_union(sourceClass、destinationClass)」というフレーズを見ました。
各インデックスのFORCEINDEXを使用して同じクエリでEXPLAINを個別に実行すると、データ分散のためにほぼ全表スキャンが実行されていることがわかりました。
これはパフォーマンスを向上させるためであり、この決定はクエリオプティマイザによってのみ行われることを理解しました。
私のクエリでは、キーとクエリは次のようになります
sourceClass: KEY (`sourceClass`,`sourceId`,`kind`)
destinationClass: KEY (`destinationClass`,`destinationId`,`kind`),
query:
WHERE (sourceClass='channel' && sourceId=1016) || (destinationClass='channel'
&& destinationId=1016)
オプティマイザーがいつこれを選択するようになるのか知りたいのですが、この種の結果を見つけることによる不利な点はありますか?