Nó phụ thuộc.
Biến số 1: Nếu MySQL chọn xây dựng (các) chỉ mục một cách nhanh chóng hoặc đợi cho đến khi tất cả dữ liệu được đưa vào, sau đó thực hiện sắp xếp, v.v., để xây dựng chỉ mục. Lưu ý: Các chỉ số UNIQUE (tôi nghĩ) phải được xây dựng nhanh chóng để có thể xác minh tính ĐỘC ĐÁO. KHÓA CHÍNH cho InnoDB được lưu trữ cùng với dữ liệu (hoặc bạn có thể nói ngược lại), do đó PHẢI được xây dựng ngẫu nhiên.
Biến số 2: Chỉ mục theo dõi dữ liệu (ví dụ: AUTO_INCREMENT hoặc dấu thời gian) so với ngẫu nhiên (GUID, MD5) hoặc ở đâu đó ở giữa (số phần, tên, friend_id).
Biến số 3 (nếu chỉ mục được xây dựng nhanh chóng): Chỉ mục có thể vừa với bộ đệm (key_buffer hoặc innodb_buffer_pool) hoặc có thể tràn vào đĩa.
Các chỉ mục theo dõi dữ liệu là hiệu quả và hầu như tuyến tính, bất kể câu trả lời cho # 1.
Id ngẫu nhiên là một nỗi đau. Nếu chỉ mục không phù hợp với bộ đệm, thời gian để xây dựng nó sẽ tệ hơn nhiều so với tuyến tính, bất kể các biến khác. (Tôi không đồng ý với Rolando trong trường hợp này.) Một bảng InnoDB khổng lồ có GUID cho PK rất chậm để CHỌN vào - lập kế hoạch trên 100 hàng / giây cho các đĩa thông thường; có thể 1000 nếu bạn có SSD. LOAD DATA và INSERT hàng loạt sẽ không giúp bạn vượt qua sự chậm chạp của bộ lưu trữ ngẫu nhiên.
3,53 đến 5,6 - không có nhiều thay đổi.
Nhiều trục chính? Phân chia RAID tốt hơn trong hầu hết mọi tình huống so với việc gán thủ công cái này ở đây và cái kia ở đó. Tách thủ công dẫn đến các tình huống không cân bằng - quét bảng bị kẹt trên đĩa dữ liệu; một hoạt động chỉ mục bị kẹt trên đĩa chỉ mục; một truy vấn đơn độc đầu tiên đánh vào đĩa chỉ mục, sau đó là đĩa dữ liệu (không chồng lấp); v.v.