精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL索引和查詢優化的實際操作

數據庫 MySQL
此文章主要向大家講述的是MySQL索引和查詢優化的實際操作步驟,以及其相關的實際應用代碼的描述,以下就是文章的主要內容描述。

以下的文章主要介紹的是MySQL索引和查詢優化的實際操作流程,我們大家都知道MySQL索引和查詢優化在實際操作中出現的比例較高,所以對其有更深的了解會在你今后的學習中有所收獲所。

恰當的索引可以加快查詢速度,可以分為四種類型:主鍵、唯一索引、全文索引、普通索引。

 

 

主鍵:唯一且沒有null值。

 

 

  1. create table pk_test(f1 int not null,primary key(f1));  
  2. alter table customer modify id int not null, add primary key(id); 

 

 

 

普通索引:允許重復的值出現。

 

 

  1. create table tableanme (fieldname1 columntype,fieldname2 columntype,index [indexname] (fieldname1 [,fieldname2...]));  
  2. create table tablename add index [indexname] (fieldname1 [fieldname2...]);  
  3. alter table slaes add index(value); 

 

 

 

全文MySQL索引:用來對大表的文本域(char,varchar,text)進行索引。

 

語法和普通索引一樣-fulltext。

 

使用全文索引:create table ft2 (f1 varchar(255),fulltext(f1));

 

insert into ft2 values('wating for the bvarbariands'),('in the heart of the country'),('the master of petersburg'),('writing and being'),('heart of the beast'),('master master');

 

select * from ft2 where match(f1) against('master'); // match()-匹配域;against()匹配值。

 

MySQL會對某些字忽略,造成查詢的誤差:a. 50%以上的域出現的單詞;b.少于三個字的單詞;c.MySQL預定義的列表,包括the。查詢語句:select * from ft2 where match(f1) against('the master'); // 與希望的結果是不同的

 

相關性分數查詢:select f1,(match(f1) against('master')) from ft2;

 

MySQL4的新功能-布爾全文查詢:select * from ft2 where match(f1) against('+master -pet' in boolean mode); // 運算符類型 +-<>()~*"

 

 

唯一索引:除了不能有重復的記錄外,其它和普通索引一樣。

 

create table ui_test (f1 int,f2 int,unique(f1));

 

alter table ui_test add unique(f2);

 

對域(varchar,char,blob,text)的部分創建MySQL索引:alter table customer add index (surname(10));

 

自動增加域:每次插入記錄時會自動增加一個域的值,只能用于一個域,且這個域有索引。

 

create table tablename(fieldname int auto_increment,[fieldname2...,] primary key(filedname));

 

alter table tablename modify fieldname columntype auto_increment;

 

last_insert_id()函數返回***插入的自動增加值。

 

select last_insert_id() from customer limit 1;

 

此函數在多個連接同時進行時,會發生錯誤。

 

重置自動增加計數器的值:

 

create table tablename(fieldname int auto_increment,[fieldname2...,] primary key(filedname) auto_increment=50);

 

alter table tablename auto_increment=50;

 

如果重置的值比存在的值小,自動增加計數器會從記錄中***的那個值開始增加計數,比如customer表中的id已經有1、2、3、15、16、20,當把自動增加計數器的值設為1時,下次插入的記錄會從21開始。

 

自動增加計數器的越界:有效值為1~2的127次方,即2147483647。如果超過這個值(包括負值),MySQL會自動把它設為***值,這樣就會產生一個重復鍵值的錯誤。

 

自動增加域在多列MySQL索引中的使用:

 

create table staff(rank enum('employee','manager','contractor') not null,position varchar(100),id int not null auto_increment,primary key(rank,id));

 

insert into staff(rank,position) values('employee','cleaner'),('cotractor','network maintenance'),('manager','sales manager');

 

在對每個級別添加一些數據,會看到熟悉的自動增加現象:

 

insert into staff(rank,position) values('employee','cleaner1'),('employee','network maintenance1'),('manager','sales manager1');

 

在這種情況下是不能重置自動增加計數器的。

 

刪除或更改索引:對索引的更改都需要先刪除再重新定義。

 

alter table tablename drop primary key;

 

alter table table drop index indexname;

 

drop index on tablename;

 

 

高效使用索引:下面討論的是用了索引會給我們帶來什么?

 

1.) 獲得域where從句中匹配的行:select * from customer where surname>'c';

 

2.) 查找max()和min()值時,MySQL只需在排序的索引中查找***個和***一個值。

 

3.) 返回的部分是MySQL索引的一部分,MySQL就不需要去查詢全表的數據而只需看索引:select id from custo及mer;

 

4.) 對域使用order by的地方:select * from customer order by surname;

 

5.) 還可以加速表的連接:select first_name,surname,commission from sales,sales_rep where sales.sales_rep=sales_rep.employee_number and code=8;

 

6.) 在通配符的情況下:select * from sales_rep where surname like 'ser%';

 

這種情況就不能起作用:select * from sales_rep where surname like '%ser%'; #p#

 

 

選擇索引:

 

1.) 有查詢需要使用索引(比如where從句中條件的域)的時候,要創建索引;不要不使用的域(不如***個字符是通配符的)創建索引。

 

2.) 創建的索引返回的行越少越好,主鍵***,枚舉類型的索引不什么用處。

 

3.) 使用短索引(比如,名字的頭十個字符而不是全部)。

 

4.) 不要創建太多的MySQL索引,雖然加快了查詢的速度,但增加了更新的添加記錄的時間。如果索引在查詢中很少使用,而沒有索引只是輕微的影響速度,就不要創建索引。

 

 

最左邊規則:這種情況發生在多個有索引的域上,MySQL從索引列表的最左邊開始,按順序使用他們。

 

 

  1. alter table customer add initial varchar(5);   
  2. alter table customer add index(surname,initial,first_name);   
  3. update customer set initial='x' where id=1;   
  4. update customer set initial='c' where id=2;   
  5. update customer set initial='v' where id=3;   
  6. update customer set initial='b' where id=4;   
  7. update customer set initial='n' where id=20;   
  8. update customer set initial='m' where id=21

 

 

如果在查詢中使用了這三個域,那就***限度的利用了索引:select * from customer where surname='clegg' and initial='x' and first_name='yvonne';

 

或者是利用MySQL索引的大部分:select * from customer where surname='clegg' and initial='x';

 

或僅僅是surname:select * from customer where surname='clegg';

 

如果打破最左邊規則,下面的例子就不會用到索引:select * from customer where initial='x' and first_name='yvonne';

 

select * from customer where initial='x' ;

 

select * from customer where first_name='yvonne';

 

select * from customer where surname='clegg' and first_name='yvonne';

 

使用explain-解釋MySQL如何使用索引來處理select語句及連接表的。

輸入 explain select * from customer; 后,出現一張表,個行的意思如下:

 

table-顯示此行數據屬于哪張表;type-重要的一列,顯示使用了何種連接,從好到差依次為const、eq_ref、ref、range、index、all,下面會詳細說明;possible_keys-可以應用在這張表中的索引,如果為null,則表示沒有可用索引;key-實際使用的索引,如為null,表示沒有用到索引;key_len-索引的長度,在不損失精確度的情況下,越短越好;ref-顯示索引的哪一列被使用了,如果可能的話,是個常數;rows-返回請求數據的行數;extra-關于MySQL如何解析查詢的額外信息,下面會詳細說明。

 

extra行的描述:distinct-MySQL找到了域行聯合匹配的行,就不再搜索了;

 

not exists-MySQL優化了left join,一旦找到了匹配left join的行,就不再搜索了;

 

range checked for each-沒找到理想的索引,一次對于從前面表中來的每一個行組合;

 

record(index map: #)-檢查使用哪個MySQL索引,并用它從表中返回行,這是使用索引最慢的一種;

 

using filesort-看到這個就需要優化查詢了,MySQL需要額外的步驟來發現如何對返回的行排序。他根據連接類型以及存儲排序鍵值和匹配條件的全部行的行指針來排序全部行。

 

using index-列數據是從單單使用了索引中的信息而沒有讀取實際行的表返回的,這發生在對表的全部的請求列都是同一個索引時;

 

using temporary-看到這個就需要優化查詢了,MySQL需要創建一個臨時表來查詢存儲結果,這通常發生在多不同的列表進行order by時,而不是group by;

 

where used-使用了where從句來限制哪些行將與下一張表匹配或是返回給用戶。如不想返回表中用的全部行,并連接類型是all或index,這就會發生,也可能是查詢有問題。

 

type的描述:system-表只有一行,這是const連接類型的特例;const-表中一個記錄的***值能夠匹配這個查詢(索引可以是主鍵或唯一索引)。因為只有一行,這個值實際就是常數,因為MySQL先讀這個值,再把它當作常數對待;eq_ref-從前面的表中,對每一個記錄的聯合都從表中讀取一個記錄。在查詢使用索引為主鍵或唯一索引的全部時使用;ref-只有使用了不是主鍵或唯一索引的部分時發生。

對于前面表的每一行聯合,全部記錄都將從表中讀出,這個連接類型嚴重依賴索引匹配記錄的多少-越少越好;range-使用索引返回一個范圍中的行,比如使用>或<查找時發生;index-這個連接類型對前面的表中的每一個記錄聯合進行完全掃描(比all好,因為索引一般小于表數據);all-這個連接類型多前面的表中的每一個記錄聯合進行完全掃描,這個比較糟糕,應該盡量避免。

 

舉個例子:create index sales_rep on sales(sales_rep); // 可以比較一下創建MySQL索引前后的變化

 

explain select * from sales_rep left join sales on sales.sales_rep = sales_rep.employee_number;

 

結果如下:

 

  1. table type possible_keys key key_len ref rows extra   
  2. sales_rep all null null null null 5   
  3. sales ref sales_rep sales_rep 5 sales_rep.employee_number 2  

 

 

這個結果表示sales_rep表有個不好的連接類型-all,沒用到索引,要查詢的行數為5;sales的連接類型為ref,可用的索引是sales_rep,實際也使用sales_rep索引,這個索引的長度是5,對應的列是employee_number,要查詢的行數為2,所以這次查詢對表共進行了5×2次查詢。

查看索引信息:show index from tablename;

列的描述:table-正在查看的表名;non_unique-1或1.0表示索引不能包含重復值(主鍵和唯一索引),1表示可以;key_name-索引名;seq_in_index-索引中列的順序,從1開始;column_name-列名;collation-a或null,a表示索引以序升排列,null表示不排序;

cardinality-索引中唯一值的個數;sub_part-如果整個列為MySQL索引,值為null,否則以字符表示索引的大??;packed-是否打包;null-如果列能包含null,則為yes;comment-各種注釋。

 

【編輯推薦】

  1. 對MySQL DELETE語法的詳細解析
  2. MySQL show的實際操作用法
  3. MySQL 游標的具體使用方案
  4. MySQL查看表結構的實際應用命令列舉
  5. 如何實現MySQL Replication 優化

 

責任編輯:佚名 來源: 博客園
相關推薦

2010-05-26 14:06:44

MySQL查詢

2010-05-17 16:52:14

MySQL limit

2010-05-21 14:56:53

MySQL聯表查詢優化

2010-12-07 09:20:44

MySQL limit

2010-05-12 11:27:01

MySQL SQL

2010-04-20 11:06:33

Oracle索引

2010-07-06 09:20:30

SQL Server查

2010-05-13 16:21:58

2010-05-27 10:35:09

查詢MySQL數據

2010-07-07 11:03:21

SQL Server索

2010-06-10 13:04:31

2010-05-26 18:09:42

MySQL啟動

2010-05-31 16:17:56

MySQL數據庫性能

2010-06-02 13:58:30

MySQL數據庫性能

2010-05-18 17:39:13

MySQL alter

2010-06-12 13:39:33

MySQL操作blob

2010-03-05 15:07:35

Python優化圖片

2010-05-24 15:06:52

MySQL內建復制功能

2010-05-20 17:40:54

MySQL編碼

2010-05-12 13:45:25

Mysql 復制設置
點贊
收藏

51CTO技術棧公眾號

久久aimee| 中文字幕在线看片| 风流少妇一区二区| 91精品国产高清久久久久久91| 国产婷婷在线观看| 中文av在线全新| 中文字幕亚洲区| 国产精品嫩草在线观看| 国产男人搡女人免费视频| 中文字幕亚洲精品乱码 | 成人免费无码av| 国产秀色在线www免费观看| 成人短视频下载| 国产精品影片在线观看| 日韩免费av片| 99久久夜色精品国产亚洲96 | 亚洲毛片一区| 日韩在线观看免费av| 国产a级黄色片| 日韩综合av| 色综合久久综合| 18禁裸男晨勃露j毛免费观看| 99青草视频在线播放视| aaa国产一区| 亚洲最大福利网站| 日韩欧美一级大片| 亚洲综合另类| 久久免费视频观看| 黑人狂躁日本娇小| 精品视频免费| 亚洲欧美中文字幕| 97人妻精品一区二区三区免费| 99热这里有精品| 欧美在线免费播放| 91好吊色国产欧美日韩在线| 久久香蕉一区| 亚洲激情六月丁香| 免费看av软件| 欧美极品另类| 国产精品国产三级国产普通话蜜臀| 精品午夜一区二区三区| 亚洲成人77777| 国产酒店精品激情| 91久久在线播放| 一区二区三区黄| 另类综合日韩欧美亚洲| 国产精品毛片a∨一区二区三区|国 | 尤物av一区二区| 欧美与动交zoz0z| 国产在线一区二区视频| 国产精品国产三级国产| 亚洲一区免费看| 日本高清视频在线播放| 中文字幕中文乱码欧美一区二区 | 亚洲精品免费在线视频| 国产精品伦一区二区三区| 理论电影国产精品| 国产欧美一区二区三区在线看| 波多野结衣激情视频| 日韩电影在线一区二区| 国产精品久久久精品| 亚洲 小说区 图片区| 久久精品999| 国产主播在线一区| 国产成人精品免费看视频| 国产一区二区三区免费在线观看| 91热精品视频| 亚洲经典一区二区| proumb性欧美在线观看| 欧美午夜精品理论片a级大开眼界| 久久精品国产亚洲a∨麻豆| 国产日韩欧美一区二区三区综合| 亚洲高清视频一区| 超碰caoporn久久| 亚洲大型综合色站| 日韩亚洲在线视频| 欧美黄色网络| 日韩欧美久久久| 一级特黄a大片免费| 国产成人精品三级高清久久91| 中国日韩欧美久久久久久久久| 日韩在线视频免费看| 国产精品av久久久久久麻豆网| 国内精品久久影院| 探花国产精品一区二区| 狠狠色丁香婷婷综合| 国产精品久久久久久久久久久久冷| 欧洲精品久久一区二区| 国产亲近乱来精品视频| 亚洲高潮无码久久| 这里有精品可以观看| 欧美日本精品一区二区三区| 国产白袜脚足j棉袜在线观看| 精品在线播放| 欧美精品在线观看91| 久久久久久久久久久影院| 青草国产精品久久久久久| 99久久99久久| 国产精品免费观看| 亚洲一级电影视频| 性生交免费视频| 亚洲三区欧美一区国产二区| 伊是香蕉大人久久| 久久精品国产亚洲AV无码麻豆| 日韩经典中文字幕一区| 成人综合电影| 色开心亚洲综合| 午夜激情综合网| 亚洲综合20p| 国产一区二区三区网| 久久免费少妇高潮久久精品99| 在线免费看av片| 久久色成人在线| 真实国产乱子伦对白视频| 91欧美精品| 日韩hd视频在线观看| 亚洲精品自拍视频在线观看| 亚洲综合丁香| 国产精品久久久久久久久婷婷 | 久久久久国产精品免费网站| 中文字幕日日夜夜| 久久综合色之久久综合| 97超碰国产精品| 少妇精品视频在线观看| 亚洲人午夜精品| 日韩字幕在线观看| 国产91精品欧美| 国产又大又长又粗又黄| 99re66热这里只有精品4| 欧美精品一区二区三区高清aⅴ| 小嫩苞一区二区三区| 蜜臀a∨国产成人精品| 久久精品99| 成人国产电影在线观看| 欧美xxxxx牲另类人与| 久久国产波多野结衣| 蜜桃精品视频在线观看| 相泽南亚洲一区二区在线播放| 不卡av播放| 精品在线观看国产| 日韩精品久久久久久久酒店| 成人午夜视频网站| 又大又硬又爽免费视频| 日韩成人久久| 欧美老女人性生活| 国产99久久九九精品无码免费| 国产精品伦理一区二区| 红桃视频 国产| 久久久久国产| julia一区二区中文久久94| 亚洲精品一线| 欧美tk—视频vk| 久久精品国产亚洲av香蕉 | 欧美精品免费视频| 一本一本久久a久久| 久久99最新地址| 国产欧美自拍视频| 亚洲精品aⅴ| 欧美精品www| 色丁香婷婷综合久久| 疯狂欧美牲乱大交777| 91网站免费入口| 麻豆精品在线视频| 免费成人深夜夜行网站视频| 亚洲专区**| 69av在线播放| 国产美女视频一区二区三区| 欧美午夜一区二区三区免费大片| 国产精品69久久久久孕妇欧美| 紧缚捆绑精品一区二区| 久久精品在线免费视频| 日韩三级av| 国产精品久久99久久| 国产在线观看91| 精品盗摄一区二区三区| 欧美 日韩 精品| 国产精品久久久久永久免费观看 | 精品久久久久成人码免费动漫| 亚洲午夜视频在线观看| 中文字幕在线看高清电影| 青青国产91久久久久久| 亚洲色图都市激情| 羞羞答答一区二区| 国产美女直播视频一区| 欧美24videosex性欧美| 亚洲天堂一区二区三区| 国产裸体永久免费无遮挡| 亚洲成a人片在线不卡一二三区| aa片在线观看视频在线播放| 麻豆精品视频在线观看| 精品少妇人欧美激情在线观看| 九九视频免费观看视频精品 | 男女污污的视频| 中文精品久久| 欧美日韩中文国产一区发布| 老司机亚洲精品一区二区| 欧美最猛黑人xxxx黑人猛叫黄| 毛片av在线| 精品一区二区三区四区| 国产夫妻自拍av| 在线亚洲免费视频| 成人免费看片98| 国产精品久久久久影院老司 | 亚洲国产日韩欧美在线观看| 国产综合视频| 欧美日韩在线免费观看视频| 亚洲日产av中文字幕| 91观看网站| 男女啪啪999亚洲精品| 欧美亚洲激情在线| 午夜小视频福利在线观看| 一区二区三区国产在线观看| 人妻精品一区二区三区| 欧美精品久久久久久久多人混战 | 五月婷婷综合色| 神马日本精品| 国产精品免费观看高清| 99久久这里有精品| 国产精品久久久久久久av电影| 不卡av免费观看| 欧美成人手机在线| 麻豆视频在线免费观看| 中文字幕成人精品久久不卡| 亚洲aaaaaaa| 精品国产乱码久久久久久久久 | 日本中文字幕一级片| 久久麻豆精品| 亚欧洲精品在线视频免费观看| 亚欧日韩另类中文欧美| 久久av一区二区三区亚洲| 97久久超碰| αv一区二区三区| 久久av网站| 亚洲精品日韩av| 国产精品3区| 91在线高清视频| 久久伦理中文字幕| 亚洲综合在线小说| 麻豆精品久久| 亚洲综合日韩在线| 久久99成人| 成人av电影免费| 丁香婷婷成人| 国产一区二区三区奇米久涩| 国产乱论精品| 久久精品丝袜高跟鞋| 日本成人7777| 欧美亚洲免费在线| 蜜臀91精品国产高清在线观看| 精品一区二区视频| 亚洲婷婷丁香| 日本在线成人一区二区| 亚洲va久久久噜噜噜久久| 欧美一区观看| 欧美艳星介绍134位艳星| 亚洲精品不卡| 亚洲欧洲日韩| 女人被男人躁得好爽免费视频| 欧美全黄视频| 欧美视频在线播放一区| 久久久天天操| 亚洲天堂网2018| 国产白丝精品91爽爽久久| 国产精品一区二区无码对白| 91免费观看视频| 国产精品av久久久久久无| 国产精品久久久久四虎| 久久久精品视频在线| 婷婷激情综合网| 国产精品熟女视频| 欧美猛男超大videosgay| 国产成人精品毛片| 亚洲精品天天看| 黄网站免费在线观看| 欧美激情在线观看| 高清不卡av| 91九色精品视频| 国产精品极品国产中出| 日韩精品久久久免费观看 | 欧美激情一区二区在线| 精品自拍偷拍视频| 精品久久久久久久久久国产| 亚洲精品无码久久久久| 欧美成人精品3d动漫h| 肉丝一区二区| 久久伊人精品一区二区三区| 国产黄大片在线观看| 国产精品成av人在线视午夜片 | 日韩精品一区二区三区四区| 日韩电影免费| 久久中国妇女中文字幕| 中文字幕高清在线播放| 亚洲a一级视频| 狠狠操综合网| 99久久免费观看| 久久成人久久爱| 欧美 变态 另类 人妖| 亚洲欧美韩国综合色| 午夜精品免费观看| 欧美成人a在线| 五月天婷婷在线视频| 亚州国产精品久久久| 懂色av色香蕉一区二区蜜桃| 欧美日韩高清在线一区| 欧美午夜在线视频| 国产福利在线免费| 91视频在线看| 久草视频手机在线观看| 欧美视频中文一区二区三区在线观看| 成人午夜免费福利| xvideos成人免费中文版| 欧美成人ⅴideosxxxxx| 国产精品免费一区二区三区四区| 91一区二区三区四区| 国产无套粉嫩白浆内谢的出处| 国产999精品久久| 日韩福利小视频| 欧美午夜精品一区| 亚洲欧美日韩综合在线| 久精品免费视频| 成人黄色91| 亚洲一区二区在线看| 日本不卡一区二区| 久久久久久九九九九九| 偷偷要91色婷婷| 色丁香婷婷综合久久| 欧美国产乱视频| 欧美一级片网址| 手机福利在线视频| 久久精品久久99精品久久| 91精品人妻一区二区三区| 黄色91在线观看| 婷婷丁香花五月天| 国语自产精品视频在免费| 成人动态视频| 六月婷婷激情综合| 粉嫩av一区二区三区| 精品爆乳一区二区三区无码av| 7777精品久久久大香线蕉| 欧美激情二区| 91久久夜色精品国产网站| 亚洲九九视频| 麻豆精品国产传媒| 亚洲国产一区视频| 欧性猛交ⅹxxx乱大交| 亚洲91精品在线| 日本午夜精品| 亚洲熟妇av一区二区三区| 久久久久久久综合日本| 天干夜夜爽爽日日日日| 亚洲天堂精品在线| 97精品国产综合久久久动漫日韩| 日韩一本精品| 狠狠网亚洲精品| 黄色一级片在线| 精品国产一区a| 亚洲天堂电影| 天堂资源在线亚洲资源| 久久aⅴ国产欧美74aaa| 青娱乐国产在线| 亚洲成人1234| 三上悠亚激情av一区二区三区| 日韩精品久久久免费观看| 麻豆精品一区二区综合av| 久久久久久久9999| 亚洲国产精彩中文乱码av| av资源亚洲| 中文字幕中文字幕99| 高清国产一区二区| www.com国产| 色综合伊人色综合网站| 天堂av一区| 97视频在线免费播放| 中文字幕一区二区三区在线播放| 亚洲av无码乱码国产麻豆| 4438全国成人免费| 日韩精品午夜| 风韵丰满熟妇啪啪区老熟熟女| 天天色综合天天| 无遮挡的视频在线观看| 国产伦精品一区二区三区高清版 | 女性生殖扒开酷刑vk| 色综合久久六月婷婷中文字幕| av在线播放av| 国产精品久久久久av福利动漫| 日本欧美一区二区三区| 国产亚洲色婷婷久久99精品| 国产午夜精品免费一区二区三区| 色999久久久精品人人澡69| 极品粉嫩国产18尤物| 中文成人av在线| 欧美一级特黄aaaaaa大片在线观看| 国产ts人妖一区二区三区 | 妖精一区二区三区精品视频 | av综合网址| 色综合天天色综合| 午夜久久久影院| 免费在线观看av| 欧美日韩无遮挡| 国产aⅴ综合色|