php 批量生成sql脚本,#Shell脚本 -- 批量生成测试用SQL语句

如要往如下表中插入1000000行数据,测试索引等使用情况.

Create Table: CREATE TABLE `key_t` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`key1` int(11) DEFAULT NULL,

`key2` int(11) DEFAULT NULL,

`key3` int(11) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `key1` (`key1`,`key2`,`key3`)

) ENGINE=InnoDB

生成1000000行插入sql(其中key1 key2 key3的值均为0~999的随机整数):

$ echo "insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));" | awk '{for(i=0; i<1000000; i++) print $0}' > insert_into_key_t.sql

$ head insert_into_key_t.sql

insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));

insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));

insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));

#或者通过awk直接生成好随机数据 这样导入时会快一点

$ echo "" | awk '{for(i=0; i<3; i++) print "insert into key_t(key1,key2,key3) values("int((rand()*1000))", "int(rand()*1000)", "int(rand()*1000)");"}'

insert into key_t(key1,key2,key3) values(237, 291, 845);

insert into key_t(key1,key2,key3) values(152, 585, 193);

insert into key_t(key1,key2,key3) values(810, 173, 484);

导入到mysql表中:

$ mysql -uroot -p test 

mysql> explain select count(*) from key_t where key1=1 group by key3;

+----+-------------+-------+------+---------------+------+---------+-------+------+-----------------------------------------------------------+

| id | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra                                                     |

+----+-------------+-------+------+---------------+------+---------+-------+------+-----------------------------------------------------------+

|  1 | SIMPLE      | key_t | ref  | key1          | key1 | 5       | const |  961 | Using where; Using index; Using temporary; Using filesort |

+----+-------------+-------+------+---------------+------+---------+-------+------+-----------------------------------------------------------+

1 row in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值