Họ nói đúng. Tham gia vào trường văn bản CHAR (30) - đặc biệt là trường chứa dữ liệu tên người - sẽ chậm, kém hiệu quả và cực kỳ mong manh. Mọi người thay đổi tên của họ (kết hôn là một ví dụ rõ ràng) và nhiều người có thể có cùng một tên.
Bạn muốn tạo các chỉ mục thích hợp trên các bảng của mình để hỗ trợ thứ tự bạn muốn dữ liệu xuất hiện và quên phân nhóm. Quy trình tối ưu hóa hiệu suất của bạn nghe giống như một thảm họa đang tìm kiếm một nơi xảy ra. Xin lỗi, nhưng việc bỏ / tạo các bảng như vậy sẽ gây rắc rối.
Tôi sẽ bắt đầu với một CHỈ SỐ DUY NHẤT trên customer.id, một CHỈ SỐ DUY NHẤT trên transaction.ticket_number và một INDEX (cho hiệu suất hơn là thẻ số, vì vậy việc thực thi tính duy nhất không quá quan trọng) trên các giao dịch (id, ticket_number DESC) và lấy nó từ ở đó. Dữ liệu được trả về từ bảng giao dịch theo thứ tự xuất hiện trong chỉ mục.
Tôi chỉ xem xét việc phân cụm khi tất cả các cách khác để tối ưu hóa truy vấn đã hết.