1PASS="hogepass"2cat>hoge.sql <<EOF
3set profiling=1;
4CREATE TABLE User (
5 id varchar(20) PRIMARY KEY,
6 name varchar(100) NOT NULL
7);
8CREATE TABLE Question (
9 id integer AUTO_INCREMENT PRIMARY KEY,
10 user varchar(20) NOT NULL,
11 content TEXT NOT NULL
12);
13CREATE TABLE Answer (
14 id integer AUTO_INCREMENT PRIMARY KEY,
15 question integer NOT NULL,
16 user varchar(20) NOT NULL,
17 content TEXT NOT NULL
18);
19EOF20echo"INSERT INTO User VALUES ('1', 'UserName1');">>hoge.sql
21num=122foriin$(seq18);do23echo"INSERT INTO User SELECT cast((cast(id as signed)+${num}) as char), concat('UserName', cast((cast(id as signed)+${num}) as char)) FROM User;"24num=$(echo $num + $num |bc)25done>>hoge.sql
26echo"INSERT INTO Question VALUES(NULL, '1', 'QuestionContent1');">>hoge.sql
27num=128foriin$(seq19);do29echo"INSERT INTO Question select NULL, cast(mod(id+${num}-1, 262144)+1 as char), concat('QuestionContent', cast(id+${num} as char)) from Question;"30num=$(echo $num + $num |bc)31done>>hoge.sql
32echo"INSERT INTO Answer VALUES(NULL, 1, 1, 'AnswerContent1');">>hoge.sql
33num=134foriin$(seq19);do35echo"INSERT INTO Answer select NULL, mod(id+${num}-1, 524288)+1, cast(mod(id+${num}-1, 262144) as char)+1, concat('AnswerContent', cast(id+${num} as char)) from Answer;"36num=$(echo $num + $num |bc)37done>>hoge.sql
38cat>>hoge.sql <<EOF
39analyze table User, Question, Answer;
40create index Question_user on Question(user);
41create index Answer_question on Answer(question);
42create index Answer_user on Answer(user);
43select count(*) from User;
44select count(*) from Question;
45select count(*) from Answer;
46select U.name as 質問者, Q.content as 質問, A.content as 回答, AU.name as 回答者 from User as U inner join Question as Q on U.id=Q.user inner join Answer as A on Q.id=A.question inner join User as AU on A.user=AU.id where U.id in ('1','3','5');
47show profiles;
48exit;
49EOF50docker run -d --rm --name hoge_mysql -v $(pwd)/data:/var/lib/mysql -v $(pwd):/home/mysql -e MYSQL_ROOT_PASSWORD=${PASS} mysql:8
51docker exec -i -w /home/mysql hoge_mysql bash<<EOF
52while ! mysql -u root --password=${PASS} </dev/null;do
53 sleep 1
54done
55mysql -u root --password=${PASS} --verbose --table <<EOF2
56create database hoge;
57exit;
58EOF259LC_CTYPE=C.UTF-8 mysql -u root --password=${PASS} --database=hoge --verbose --table <hoge.sql
60exit61EOF
62docker stop hoge_mysql
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/12/28 14:14