彼らは正しい。 CHAR(30)テキストフィールド(特に個人名データを含むフィールド)への結合は、時間がかかり、非常に非効率的で、非常に壊れやすくなります。人々は自分の名前を変更し(結婚は明白な例です)、複数の人々が同じ名前を持つことができます。
データを表示する順序をサポートするためにテーブルに適切なインデックスを作成し、クラスタリングを忘れる必要があります。パフォーマンスの最適化手順は、発生する場所を探している災害のように聞こえます。申し訳ありませんが、そのようなテーブルを削除/作成すると問題が発生します。
まず、customer.idのUNIQUE INDEX、transaction.ticket_numberのUNIQUE INDEX、トランザクション(id、ticket_number DESC)のINDEX(カーディナリティではなくパフォーマンスのため、一意性を強制することはそれほど重要ではありません)から始めます。そこの。データは、インデックスに表示される順序でトランザクションテーブルから返されます。
クエリ最適化の他のすべての手段が使い果たされた場合にのみ、クラスタリングを検討します。