程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql中敏捷拔出百萬條測試數據的辦法

mysql中敏捷拔出百萬條測試數據的辦法

編輯:MySQL綜合教程

mysql中敏捷拔出百萬條測試數據的辦法。本站提示廣大學習愛好者:(mysql中敏捷拔出百萬條測試數據的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql中敏捷拔出百萬條測試數據的辦法正文


比較一下,起首是用 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萬的數據量了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved