MySQL一般使用者,均能下SHOW GLOBAL STATUS,
亦即對 information_schema.GLOBAL_STATUS 有查詢的權限.
此Table的資料筆數隨著版本不同有差異,不過數量已經夠我們
用來產生測試資料的初始之用.
首先建立一個Table,使用Memory Engine.
CREATE TABLE hitofiller(
id INT UNSIGNED NOT NULL PRIMARY KEY
)ENGINE=Memory;
產生100筆基本的資料
INSERT INTO hitofiller(id)
SELECT @num := @num + 1
FROM information_schema.GLOBAL_STATUS a
, (SELECT @num := 0) b
LIMIT 100;
Query OK, 100 rows affected (0.01 sec)
Records: 100 Duplicates: 0 Warnings: 0
直接利用hitofiller 增加自己的數量,到1萬筆.
INSERT INTO hitofiller(id)
SELECT @num := @num + 1
FROM hitofiller a
, (SELECT id
FROM hitofiller
LIMIT 99) b
, (SELECT @num := 100) c;
Query OK, 9900 rows affected (0.02 sec)
Records: 9900 Duplicates: 0 Warnings: 0
檢查 hitofiller 的數值.
SELECT COUNT(1)
, MAX(id)
, MIN(id)
FROM hitofiller;
+----------+---------+---------+
| COUNT(1) | MAX(id) | MIN(id) |
+----------+---------+---------+
| 10000 | 10000 | 1 |
+----------+---------+---------+
至此已經產生了1萬筆,遞增數列的資料.
應用範例:
例如要產生一億筆的有日期型態的測試資料.
建立測試用的Table
CREATE TABLE hito_date(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
sdate DATE NOT NULL);
INSERT INTO hito_date(sdate)
SELECT DATE_ADD('2014-01-01', INTERVAL RAND(20141006) * 364 DAY)
FROM hitofiller a
JOIN (SELECT id
FROM hitofiller) b;
這樣就產生了一億筆測試資料.