Một số lệnh insert dữ liệu fake để test.
Ví dụ để tạo ra 1.000.000 – 10.000.000 dòng dữ liệu cho bảng sau với name và description có định dạng nội dung là: “Title test”, “Content test” + số thứ tự dữ liệu sinh ra.
Lưu ý:
- Thời gian tạo dữ liệu đơn giản này diễn ra khá nhanh và chấp nhận được cho quá trình test.
- Dung lượng bảng fake với 10.000.000 dòng dữ liệu định dạng nội dung như trên rơi vào khoảng 600-700MB.
Sử dụng CONCAT + UNION
Câu lệnh sử dụng cấu trúc SELECT kết hợp với subquery tạo ra bảng dữ liệu tạm từ 1->100.000. Trong đó các subquery sẽ tạo ra các số từ 0->9, sau đó sẽ tạo ra các số từ 0-99999. Cuối cùng CONCAT sẽ nối chuỗi “Title test” và “Content test” với các số tương ứng và thực hiện INSERT INTO để thêm dữ liệu fake vào bảng.
Lưu ý: mỗi subquery sẽ tương ứng với 1 số 0 trong tổng số dữ liệu cần fake. Ví dụ sau fake 100.000 dữ liệu ứng với 5 số 0 sẽ có 5 subquery. Tương ứng để fake 1.000.000 dữ liệu chỉ cần thêm 1 subquery.
INSERT INTO task_request_type_items (name, description) SELECT CONCAT('Title test', t.n), CONCAT('Content test ', t.n) FROM ( SELECT @row := @row + 1 AS n FROM ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t1, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t2, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t3, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t4, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t5, (SELECT @row:=0) t6 ) t;
Ví dụ để thêm 10.000.000 triệu dòng dữ liệu như trên câu query sẽ như sau. Thời gian thực thi test trên MySQL PHP Admin là khoảng 45 giây.
INSERT INTO task_request_type_items (name, description) SELECT CONCAT('Title test', t.n), CONCAT('Content test ', t.n) FROM ( SELECT @row := @row + 1 AS n FROM ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t1, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t2, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t3, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t4, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t5, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t6, ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) t7, (SELECT @row:=0) t8 ) t;