為了模擬這個過程,我們需要構建一個海量表(8000000),而且每條數據不一樣,這樣的測試才有意義
一、構建海量表過程
????(1)、創建數據庫
????????????????create database testdb
????(2)、選擇數據庫
????????????????set names utf8
????????????????use testdb
? ? (3)、創建表
SQL
~~~
create table dept(/*部門表*/
deptno mediumint unsigned not null default 0,
dname varchar(20) not null default "",
loc varchar(13) not null default ""
) engine=myisam default charset=utf8;
create table emp(/*雇員表*/
ename varchar(20) not null default "",
job varchar(9) not null default "",
mgr mediumint unsigned not null default 0,
hiredate date not null,
sal decimal(7,2) not null,
comm decimal(7,2) not null,
deptno mediumint unsigned not null default 0
) engine=myisam default charset=utf8;
create table salgrade(/*工資級別表*/
grade mediumint unsigned not null default 0,
losal decimal(17,2) not null,
hisal decimal(17,2) not null
) engine=myisam default charset =utf8;
#測試數據
insert into salgrade values(1,700,1200);
insert into salgrade values(2,1201,1400);
insert into salgrade values(3,1401,2000);
insert into salgrade values(4,2001,3000);
insert into salgrade values(5,3001,9999);
#設定新的命令結束符
delimiter $$
#刪除之前創建的函數
drop function rand_string$$
創建一個函數
create function rand_string(n int)
returns varchar(255)#該函數會返回一個字符串
begin
#定義了一個變量 chars_str,類型varchar(100)
declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
declare return_str varchar(255) default '';
declare i int default 0;
while i<n do
#concat函數:連接函數mysql函數
set return_str = concat(return_str,substring(chars_str,floor(1+rand()*62),1));
set i = i+1;
end while;
return return_str;
end $$
#隨機產生部門編號
create function rand_num()
returns int(5)
begin
declare i int default 0;
set i = floor(10+rand()*500);
return i;
end $$
#創建存儲過程
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;#默認不提交SQL語句
repeat #循環語句
set i = i + 1;
insert into emp values((start+i),rand_string(6),'SALESMAN',0001,curdate(),2000,4000,rand_num());
until i = max_num
end repeat;
commit;#整體提交所有SQL語句
end$$
#恢復定界符
delimiter ;
#調用存儲過程
call insert_emp(1,8000000);
~~~
- 前端
- 技巧匯總
- 構建 Node + Webpack + React 熱加載開發環境
- React
- Redux
- Webpack
- ES6
- HTML5+CSS3
- Javascript
- JS超簡潔拖動代碼
- jQuery
- 后端
- 技巧匯總
- 代碼中特殊的注釋技術——TODO、FIXME和XXX的用處
- PHP
- Xdebug不解之謎
- PHP時間獲取
- PHP遞歸優化 使用匿名函數進行遞歸
- PHP 發起POST請求
- PHP獲得數組的交集與差集
- PHP遞歸獲取下級數組,可指定ID,一維數組
- PHP 判斷是否為Get/Post/Ajax提交
- PHP實現分流隊列平均顯示信息
- PHP多維數組 指定列排序
- PHP 類Class詳解 筆記記錄
- PHP取整函數詳解
- Node
- Elasticsearch
- 數據庫
- 技巧匯總
- Mysql
- Mysql分區表實現
- Mysql union與union all 查詢
- Mysql 表中表查詢
- Mysql 分組查詢 與 分組條件查詢
- MySQL 添加列,修改列,刪除列
- Mysql優化之:構建海量表,定位慢查詢
- Mysql優化之:表的設計滿足3NF
- Mysql優化常見方法
- Mysql存儲過程詳解
- 運維
- 技巧匯總
- Linux
- Linux Centos系統下 設置代理服務器上網
- Centos7增加開機啟動腳本
- centos 掛載windows共享目錄
- CentOS設置SSH Key登錄
- Linux/CentOS單網卡綁定多個IP
- Windows
- Win10開機啟動項設置全解攻略
- PuTTY連接Linux服務器經常斷線解決方案
- Docker
- Docke啟動文件 docker-compose.yml
- Docker命令簡介(未完)
- Docker閑雜筆記
- Apache
- Nginx
- Nginx配置upstream實現負載均衡
- Nginx負載均衡學習
- IDE
- 技巧匯總
- WebStorm
- PHPStorm
- 協作
- 技巧匯總
- Git
- git 放棄本地修改 強制更新
- git編譯安裝與常用命令
- Svn