比較兩種儲存引擎在資料庫中儲存方式:
MyIsam:仔細觀察的話會發現使用這種引擎的資料庫裡面一般少說包含三個文件,**.frm ,**.myi,(放索引) **.myd(放資料),透過索引(**.myi這個檔案),定位資料在資料檔案在哪一行存放,這便會產生回行。如果沒有回行,也就是索引覆蓋,速度回非常快
InnoDb:也就是一個文件,索引和數據放在一塊,就是聚簇索引一個壞處就是文件大啦,磁碟轉動,查找也就比較低啦。這樣也就產生了分頁的區塊檔案
建立表:裡麵包含主鍵索引和聯合索引,分別使用myisam引擎和innodb引擎
create table smth (
id int auto,increment , null,
content varchar(1000) not null,
intro varchar(1000) not null,
primary key(id),
key idver(id,ver)
)engine = mymyam default 838%;
create table smth1 (
ver int(11) default null,
content varchar(1000) not null,
primary key(id),
key idver(id,ver)
)engine = innodb default charset = utf8;
檔案目錄分析如上:
下面再建立連個儲存過程,進行插入一門萬條資料
下面再建立連個儲存過程,進行插入一門萬條資料
()begin
declare num int default 1050;while num set num := num +1;
insert into smth values (num ,num,'我是誰' insert into smth values (num ,num,'我是誰' end while ;
end;
create procedure smthTest1()
begin
declare num int default 0;
while num set do
我是步','我是誰');
end while ;
end;
set profiling = 1; 顯示詳細信息
句運行結果分析:句分析
mysql>解釋
依id 順序選擇id、ver、內容;
+----+-------------+--------+----- +---------------- -+------+---------+------+------+ ------------------+
|編號|選擇類型|表格|類型|可能的鍵|關鍵| key_len |參考|行|額外 |
+----+- -----------------------+--------+------+---------- -- ---+------+---------+------+-----+-------------- -- -+
| 1 |簡單| |某事|全部|空白 |空白|空白| |空白| 9946 |使用檔案排序|
+----+------------ +--------+--------+------------ ---+------+-------- -+------+------+---------------- --+
集合中的1行
mysql>解釋
選擇id,ver ,content from smth order by id,ver;
+----+------------+--------+----- -+---- ---------+------+---------+-----+-----+- ---------- -----+
|編號|選擇型別|表格|型別|可能的按鍵|關鍵| key_len |參考|行|額外 |
+----+------------ ------------+--------+------+------------ ---+----- -+---------+------+-----+---------------- -+
| 1 |簡單| |某事|全部|空 |空白|空白| |空白| 9946 |使用文件排序|
+----+------------+--------+- -------+------------ ---+------+---------+------+-- ----+---------------- --+
集合中的1行
mysql>解釋
select id,ver,content from smth1 order by id;
+- ---+-------------+--------+------- +-------------+- --------+---------+-----+------ +--------+
|編號|選擇類型|表|型別|可能的按鍵|關鍵 | key_len |參考|行|額外|
+----+------------+--------+----- ---+------------ ---+---------+---------+------+--- --+--------+
| 1 |簡單| | smth1 |索引|空 |小學| 4 |空白| 9932 | NULL |
+----+-------- --------+--------+--------+----------- ---+-------- -+---------+------+-----+--------+
1 行在set
mysql>中解釋select id
,ver, content from smth1 order by id,ver;
+----+-------------+--------+----- -+---- ---------+------+---------+-----+-----+- ---------- -----+
|編號|選擇型別|表格|型別|可能的按鍵|關鍵| key_len |參考|行|額外 |
+----+------------ ------------+--------+------+------------ ---+----- -+---------+------+-----+---------------- -+
| 1 |簡單| | smth1 |全部|空白 |空白|空白| |空白| 9932 |使用檔案排序|
+----+------------+--------+-- ------+------------ ---+------+---------+------+--- ---+---------------- --+
mysql>解釋
select id from smth order by id;
+----+-------------+-------+-------+ --- ------------+---------+---------+-----+-----+-- - ----------+
|編號|選擇類型|表格|類型|可能的按鍵|關鍵 | key_len |參考|行|額外 |
+----+------ ------------------+--------+--------+------------ - --+---------+---------+------+-----+------------ -- +
| 1 |簡單| |某事|索引|空 |小學| 4 |空白| 9946 |使用索引|
+----+------------+---- ----+--------+------------ ---+---------+---------+ ------+-----+--------- ---+
集合中的1 行
mysql>解釋一下
按id,ver 順序從smth order 中選擇id;
+----+------------+-------+--------+- ------------ --+--------+---------+-----+-----+--- ----------+
|編號|選擇型別|表格|型別|可能的按鍵|關鍵| key_len |參考|行|額外 |
+----+-------------------- ----+--------+--------+------------ ----+--------+- --------+------+-----+------------- +
| 1 |簡單| |某事|索引|空白 | idver | 9 |空白| 9946 |使用索引|
+----+------------+--------+--------+- ----------- ----+--------+---------+--------+------ --+------------ -+
集合中的1 行
mysql>解釋一下
select id from smth1 order by id;
+----+------ -------+-------+--------+--- ------------+--------- +---------+-----+-----+-----------+
|編號|選擇型別|表|型|可能的鍵|關鍵 | key_len |參考|行|額外 |
+----+------------------------+------ --+--------+----------- ---+---------+---------+--- ---+-----+------------ --+
| 1 |簡單| | smth1 |索引|空白 |小學| 4 |空白| 9932 | +----+------------+--------+--------+------------ - --+---------+---------+------+-----+--------- ---+
集合中的1 行
mysql>解釋
select id from smth1 order by id,ver;
+----+-------------+-------+- -------+- --------------+--------+---------+-----+- ----+--- ----------+
|編號|選擇型別|表格|型別|可能的按鍵|關鍵| key_len |參考|行|額外 |
+---- +------------------------+--------+--------+------ ------ ----+--------+---------+------+-----+------- ------ +
| 1 |簡單| | smth1 |索引|空白 | idver | 9 |空白| 9932 |使用索引|
+----+------------ +--------+--------+------------ ----+--------+----- ----+--------+--------+------------ -+
一組1 行