国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql中迅速插入百萬條測試數據的方法

2024-07-24 13:02:30
字體:
來源:轉載
供稿:網友
對比一下,首先是用 mysql 的存儲過程弄的:

復制代碼 代碼如下:


mysql>delimiter $
mysql>SET AUTOCOMMIT = 0$$
mysql> create procedure test()
begin
declare i decimal (10) default 0 ;
dd:loop
INSERT INTO `million` (`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`, `pro_specification`, `name`, `add_date`, `picture_url`, `thumb_url`, `is_display_front`, `create_html_time`, `hit`, `buy_sum`, `athor`, `templete _style`, `is_hot`, `is_new`, `is_best`) VALUES
(268, 2, '0,262,268,', 0, '2342', '423423', '123123', '2012-01-09 09:55:43', 'upload/product/20111205153432_53211.jpg', 'upload/product/thumb_20111205153432_53211.jpg', 1, 0, 0, 0, 'admin', '0', 0, 0, 0);
commit;
set i = i+1;
if i= 1000000 then leave dd;
end if;
end loop dd ;
end;$
mysql>delimiter ;
mysql> call test;


結果
mysql> call test; Query OK, 0 rows affected (58 min 30.83 sec)
非常耗時。
于是我又找了一個方法
先用PHP代碼生成數據,再導入:

復制代碼 代碼如下:


<?php
$t=mktime();
set_time_limit(1000);
$myFile="e:/insert.sql";
$fhandler=fopen($myFile,'wb');
if($fhandler){
$sql="268/t2/t'0,262,268,'/t0/t '2342'/t'423423'/t'123123'/t'23423423'/t'2012-01-09 09:55:43'/t'upload/product/20111205153432_53211.jpg'/t'upload/product/thumb_20111205153432_53211.jpg'/tNULL/tNULL/t38/t'件'/t''/t123/t123/t0";
$i=0;
while($i<1000000)//1,000,000
{
$i++;
fwrite($fhandler,$sql."/r/n");
}
echo"寫入成功,耗時:",mktime()-$t;
}


然后再導入

復制代碼 代碼如下:


LOAD DATA local INFILE 'e:/insert.sql' INTO TABLE tenmillion(`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`, `pro_specification`, `name`, `description`, `add_date`, `picture_url`, `thumb_url`, `shop_url`, `shop_thumb_url`, `brand_id`, `unit`, `square_meters_unit`, `market_price`, `true_price`, `square_meters_price`);


注意字段不再以逗號分割,以/t分割,條記錄以/r/n分割。結果我插入10次數據,100W平均只要1分鐘搞定。
第二種方式mysql中間省略了很多中間步驟,導致插入速度遠勝于第一種,具體的沒有研究。

快速生成mysql上百萬條測試數據
由于測試需要,原表中只有1萬條數據,現在隨機復制插入記錄,快速達到100萬條。

itemid是主鍵。

運行幾次下面代碼。隨機取1000條插入,

insert into downitems (chid,catid,softid,....)
SELECT chid,catid,softid... FROM `downitems` WHERE itemid >= (SELECT floor(RAND() * (SELECT MAX(itemid) FROM `downitems`))) ORDER BY itemid LIMIT 1000;

然后可以修改1000的數字了。改為5000或者1萬。很快可以達到100萬的數據量了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深圳市| 鹿邑县| 铁岭市| 惠东县| 镶黄旗| 堆龙德庆县| 宁国市| 和静县| 泰州市| 宣城市| 滕州市| 巴东县| 灵宝市| 同江市| 平湖市| 奈曼旗| 天等县| 贵溪市| 中宁县| 普定县| 榆社县| 鄂州市| 城市| 台州市| 公安县| 佛坪县| 福州市| 卫辉市| 彩票| 旬阳县| 田林县| 梁平县| 民县| 福建省| 通海县| 道真| 岳西县| 南充市| 定日县| 南充市| 灵台县|