· 7 years ago · Oct 22, 2018, 07:16 PM
1/* Create Database */
2DROP SCHEMA IF EXISTS `limits`;
3CREATE SCHEMA `limits`;
4USE `limits`;
5
6/* Create Tables */
7DROP TABLE IF EXISTS `limits`.`users`;
8DROP TABLE IF EXISTS `limits`.`friends`;
9DROP TABLE IF EXISTS `limits`.`statuses`;
10
11CREATE TABLE `limits`.`users` (
12 `id` INT NOT NULL AUTO_INCREMENT ,
13 `name` VARCHAR(45) NOT NULL ,
14 `email` VARCHAR(45) NOT NULL ,
15 `address` VARCHAR(45) NULL ,
16 `likes` TEXT NULL ,
17 `dislikes` TEXT NULL ,
18 PRIMARY KEY (`id`)
19);
20
21CREATE TABLE `limits`.`friends` (
22 `a` INT NOT NULL ,
23 `b` INT NOT NULL
24);
25
26CREATE TABLE `limits`.`statuses` (
27 `id` INT NOT NULL AUTO_INCREMENT ,
28 `user_id` INT NOT NULL ,
29 `status` VARCHAR(255) NULL ,
30 PRIMARY KEY (`id`)
31);
32
33SET @user_count = 100000;
34SET @friend_count = 130;
35SET @status_count = @user_count * 100;
36
37SET @total_count = @user_count + (@user_count * @friend_count) + (@user_count * 100);
38
39/* Create Users */
40DROP PROCEDURE IF EXISTS create_users;
41
42DELIMITER //
43
44CREATE PROCEDURE create_users()
45BEGIN
46 DECLARE user_count INT DEFAULT (@user_count / 10);
47
48 WHILE user_count > 0 DO
49 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Albert Einstein','albert@einstein.sz','Rue de Suiss 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
50 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Dan Leno','dan@leno.com','Broadway 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
51 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Giovanni Lusieri','Giovanni@Lusieri.com','Rue de Suiss 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
52 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Steve Dodd','steve@dodd.com','Rue de Suiss 5', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
53 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Peter Heywood','peter@gmail.com','Rue de Suiss 4', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
54 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Joey Santiago','Joey@Santiago.de','Rue de Suiss 12', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
55 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Caroline of Ansbach','Caroline@Ansbach.au','Rue de Suiss 346', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
56 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Golding Bird','Golding@gmail.com','Rue de Suiss 245', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
57 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Ram Narayan','Ram@Narayan.com','Rue de Bangla 2346', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
58 INSERT INTO users(name, email, address, likes, dislikes) VALUES ('Katharine Hepburn','Katharine@Hepburn.org','Rue de Suiss 45', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam vulputate. Aliquam sed lectus turpis. Nullam libero mi, facilisis nec cursus non, sollicitudin non nisi. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae', 'Sed rhoncus, velit in sodales commodo, justo turpis luctus tortor, sit amet molestie velit velit ut lectus. Vivamus sollicitudin neque non purus placerat tincidunt. Vivamus ultrices convallis pellentesque. Quisque diam lorem, faucibus id ultrices vel, auctor a mauris. Duis placerat odio eget urna bibendum scelerisque. Mauris id turpis est, ac porta eros. Nullam odio turpis, lobortis at dapibus et, placerat eu neque. Suspendisse potenti. Phasellus massa nisi, scelerisque sed scelerisque ut, dapibus quis purus. Vestibulum eget lacus eget urna vehicula dapibus. Donec dolor quam, eleifend a congue nec, volutpat eget risus. Suspendisse potenti');
59
60 SET user_count = user_count - 1;
61 END WHILE;
62END;
63
64//
65
66DELIMITER ;
67
68call create_users();
69
70/* Create Friends */
71DROP PROCEDURE IF EXISTS create_friends;
72
73DELIMITER //
74
75CREATE PROCEDURE create_friends()
76BEGIN
77 DECLARE friend_count INT DEFAULT @friend_count;
78 DECLARE user_count INT DEFAULT @user_count;
79
80 WHILE user_count > 0 DO
81
82 WHILE friend_count > 0 DO
83 INSERT INTO friends(a, b) VALUES (user_count, ROUND((RAND() * @user_count)));
84
85 SET friend_count = friend_count - 1;
86 END WHILE;
87
88 SET friend_count = @friend_count;
89 SET user_count = user_count - 1;
90 END WHILE;
91
92
93END;
94
95//
96
97DELIMITER ;
98
99call create_friends();
100
101
102/* Create Statuses */
103DROP PROCEDURE IF EXISTS create_statuses;
104
105DELIMITER //
106
107CREATE PROCEDURE create_statuses()
108BEGIN
109 DECLARE status_count INT DEFAULT (@status_count / 2);
110
111 WHILE status_count > 0 DO
112 INSERT INTO statuses(user_id, status) VALUES (ROUND((RAND() * @user_count)), 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac commodo erat. Curabitur eget metus metus. Nam ultricies rutrum rhoncus. Quisque feugiat posuere erat vel varius. Curabitur dictum ipsum vitae eros varius posuere. Morbi egestas aliquam');
113 INSERT INTO statuses(user_id, status) VALUES (ROUND((RAND() * @user_count)), 'Aenean rutrum elit massa, ac lobortis lacus. In nec tellus enim, non blandit sapien. In ullamcorper rhoncus libero non adipiscing. Donec malesuada lacinia urna, eu aliquet tellus tristique sit amet. Donec ut sapien ante, vitae pulvinar sem. Cras ac risus mi. Vivamus in turpis vitae velit aliquet viverra in ut orci.');
114
115 SET status_count = status_count - 1;
116 END WHILE;
117END;
118
119//
120
121DELIMITER ;
122
123call create_statuses();
124
125
126
127/* Count created resources */
128SELECT COUNT(*) FROM users;
129SELECT COUNT(*) FROM statuses;
130SELECT COUNT(*) FROM friends;
131
132SELECT @total_count;
133
134/* Requests */
135
136/* Show 200 Statuses from Friends */
137SELECT '-> Show 200 Statuses from Friends' AS ' ';
138SELECT users.name, statuses.status FROM users, friends, statuses
139WHERE
140 friends.a = 30
141 AND
142 users.id = friends.b
143 AND
144 users.id = statuses.user_id
145 LIMIT 200;
146
147/* Count Friends */
148SELECT '-> Count Friends' AS ' ';
149SELECT count(*) FROM users, friends WHERE friends.a = 86 AND users.id = 86;
150
151/* Show Friends */
152SELECT '-> Show Friends' AS ' ';
153SELECT users.name, users.email, users.address FROM users, friends
154WHERE
155 friends.a = 56
156 AND
157 users.id = friends.b;
158
159/* Show Friends at gmail.com */
160SELECT '-> Show Friends at gmail.com' AS ' ';
161SELECT users.name, users.email, users.address FROM users, friends
162WHERE
163 friends.a = 43
164 AND
165 users.id = friends.b
166 AND
167 users.email LIKE '%@gmail.com';
168
169SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;