首頁  >  文章  >  資料庫  >  Mysql優化之深入了解儲存引擎,進行索引優化

Mysql優化之深入了解儲存引擎,進行索引優化

高洛峰
高洛峰原創
2016-12-02 13:37:421529瀏覽

比較兩種儲存引擎在資料庫中儲存方式:

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 (

id int auto_increment ,

ver int(11) default null,
content varchar(1000) not null,

intro varchar(1000) not null,

primary key(id),
key idver(id,ver)

)engine = innodb default charset = utf8;
檔案目錄分析如上:




下面再建立連個儲存過程,進行插入一門萬條資料

Mysql優化之深入了解儲存引擎,進行索引優化下面再建立連個儲存過程,進行插入一門萬條資料

()

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優化之深入了解儲存引擎,進行索引優化

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 行

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn