Mereka benar. Bergabung di bidang teks CHAR(30) - terutama yang berisi data nama orang - akan lambat, sangat tidak efisien, dan sangat rapuh. Orang-orang memang mengubah nama mereka (pernikahan adalah contoh yang jelas), dan banyak orang dapat memiliki nama yang sama.
Anda ingin membuat indeks yang sesuai pada tabel Anda untuk mendukung urutan yang Anda inginkan untuk menampilkan data, dan melupakan pengelompokan. Prosedur pengoptimalan kinerja Anda terdengar seperti bencana mencari tempat untuk terjadi. Maaf, tetapi membuang/membuat tabel seperti itu menimbulkan masalah.
Saya akan mulai dengan INDEX UNIK di customer.id, INDEX UNIK di transaction.ticket_number, dan INDEX (untuk kinerja daripada kardinalitas, jadi menegakkan keunikan tidak terlalu penting) pada transaksi (id, ticket_number DESC), dan mengambilnya dari di sana. Data dikembalikan dari tabel transaksi sesuai urutan kemunculannya di indeks.
Saya hanya akan mempertimbangkan pengelompokan ketika semua cara pengoptimalan kueri lainnya telah habis.