日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL 索引和 SQL 调优手册

發(fā)布時間:2024/9/19 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 索引和 SQL 调优手册 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MySQL索引

MySQL支持諸多存儲引擎,而各種存儲引擎對索引的支持也各不相同,因此MySQL數(shù)據(jù)庫支持多種索引類型,如BTree索引,哈希索引,全文索引等等。為了避免混亂,本文將只關注于BTree索引,因為這是平常使用MySQL時主要打交道的索引。

MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結構。提取句子主干,就可以得到索引的本質:索引是數(shù)據(jù)結構。

?

MySQL索引原理

索引目的

索引的目的在于提高查詢效率,可以類比字典,如果要查“mysql”這個單詞,我們肯定需要定位到m字母,然后從下往下找到y(tǒng)字母,再找到剩下的sql。如果沒有索引,那么你可能需要把所有單詞看一遍才能找到你想要的,如果我想找到m開頭的單詞呢?或者ze開頭的單詞呢?是不是覺得如果沒有索引,這個事情根本無法完成?

咱們去圖書館借書也是一樣,如果你要借某一本書,一定是先找到對應的分類科目,再找到對應的編號,這是生活中活生生的例子,通用索引,可以加快查詢速度,快速定位。

索引原理

所有索引原理都是一樣的,通過不斷的縮小想要獲得數(shù)據(jù)的范圍來篩選出最終想要的結果,同時把隨機的事件變成順序的事件,也就是我們總是通過同一種查找方式來鎖定數(shù)據(jù)。

數(shù)據(jù)庫也是一樣,但顯然要復雜許多,因為不僅面臨著等值查詢,還有范圍查詢(>、<、between)、模糊查詢(like)、并集查詢(or)、多值匹配(in【in本質上屬于多個or】)等等。數(shù)據(jù)庫應該選擇怎么樣的方式來應對所有的問題呢?

我們回想字典的例子,能不能把數(shù)據(jù)分成段,然后分段查詢呢?最簡單的如果1000條數(shù)據(jù),1到100分成第一段,101到200分成第二段,201到300分成第三段……這樣查第250條數(shù)據(jù),只要找第三段就可以了,一下子去除了90%的無效數(shù)據(jù)。但如果是1千萬的記錄呢,分成幾段比較好?

稍有算法基礎的同學會想到搜索樹,其平均復雜度是lgN,具有不錯的查詢性能。但這里我們忽略了一個關鍵的問題,復雜度模型是基于每次相同的操作成本來考慮的,數(shù)據(jù)庫實現(xiàn)比較復雜,數(shù)據(jù)保存在磁盤上,而為了提高性能,每次又可以把部分數(shù)據(jù)讀入內存來計算,因為我們知道訪問磁盤的成本大概是訪問內存的十萬倍左右,所以簡單的搜索樹難以滿足復雜的應用場景。

索引結構

任何一種數(shù)據(jù)結構都不是憑空產生的,一定會有它的背景和使用場景,我們現(xiàn)在總結一下,我們需要這種數(shù)據(jù)結構能夠做些什么,其實很簡單,那就是:每次查找數(shù)據(jù)時把磁盤IO次數(shù)控制在一個很小的數(shù)量級,最好是常數(shù)數(shù)量級。那么我們就想到如果一個高度可控的多路搜索樹是否能滿足需求呢?就這樣,b+樹應運而生。

b+樹的索引結構解釋

淺藍色的塊我們稱之為一個磁盤塊,可以看到每個磁盤塊包含幾個數(shù)據(jù)項(深藍色所示)和指針(黃色所示),如磁盤塊1包含數(shù)據(jù)項17和35,包含指針P1、P2、P3,P1表示小于17的磁盤塊,P2表示在17和35之間的磁盤塊,P3表示大于35的磁盤塊。真實的數(shù)據(jù)存在于葉子節(jié)點即3、5、9、10、13、15、28、29、36、60、75、79、90、99。非葉子節(jié)點不存儲真實的數(shù)據(jù),只存儲指引搜索方向的數(shù)據(jù)項,如17、35并不真實存在于數(shù)據(jù)表中。

b+樹的查找過程

如圖所示,如果要查找數(shù)據(jù)項29,那么首先會把磁盤塊1由磁盤加載到內存,此時發(fā)生一次IO,在內存中用二分查找確定29在17和35之間,鎖定磁盤塊1的P2指針,內存時間因為非常短(相比磁盤的IO)可以忽略不計,通過磁盤塊1的P2指針的磁盤地址把磁盤塊3由磁盤加載到內存,發(fā)生第二次IO,29在26和30之間,鎖定磁盤塊3的P2指針,通過指針加載磁盤塊8到內存,發(fā)生第三次IO,同時內存中做二分查找找到29,結束查詢,總計三次IO。

真實的情況是,3層的b+樹可以表示上百萬的數(shù)據(jù),如果上百萬的數(shù)據(jù)查找只需要三次IO,性能提高將是巨大的,如果沒有索引,每個數(shù)據(jù)項都要發(fā)生一次IO,那么總共需要百萬次的IO,顯然成本非常非常高。

b+樹性質

1、通過上面的分析,我們知道間越小,數(shù)據(jù)項的數(shù)量越多,樹的高度越低。這就是為什么每個數(shù)據(jù)項,即索引字段要盡量的小,比如int占4字節(jié),要比bigint8字節(jié)少一半。這也是為什么b+樹要求把真實的數(shù)據(jù)放到葉子節(jié)點而不是內層節(jié)點,一旦放到內層節(jié)點,磁盤塊的數(shù)據(jù)項會大幅度下降,導致樹增高。當數(shù)據(jù)項等于1時將會退化成線性表。

2、當b+樹的數(shù)據(jù)項是復合的數(shù)據(jù)結構,比如(name,age,sex)的時候,b+數(shù)是按照從左到右的順序來建立搜索樹的,比如當(張三,20,F)這樣的數(shù)據(jù)來檢索的時候,b+樹會優(yōu)先比較name來確定下一步的所搜方向,如果name相同再依次比較age和sex,最后得到檢索的數(shù)據(jù);但當(20,F)這樣的沒有name的數(shù)據(jù)來的時候,b+樹就不知道下一步該查哪個節(jié)點,因為建立搜索樹的時候name就是第一個比較因子,必須要先根據(jù)name來搜索才能知道下一步去哪里查詢。

比如當(張三,F)這樣的數(shù)據(jù)來檢索時,b+樹可以用name來指定搜索方向,但下一個字段age的缺失,所以只能把名字等于張三的數(shù)據(jù)都找到,然后再匹配性別是F的數(shù)據(jù)了, 這個是非常重要的性質,即索引的最左匹配特性。

MySQL 索引實現(xiàn)

在MySQL中,索引屬于存儲引擎級別的概念,不同存儲引擎對索引的實現(xiàn)方式是不同的,本文主要討論MyISAM和InnoDB兩個存儲引擎的索引實現(xiàn)方式。

MyISAM索引實現(xiàn)

MyISAM引擎使用B+Tree作為索引結構,葉節(jié)點的data域存放的是數(shù)據(jù)記錄的地址。

下圖是MyISAM索引的原理圖:

這里設表一共有三列,假設我們以Col1為主鍵,則上圖便是一個MyISAM表的主索引(Primary key)示意圖。可以看出MyISAM的索引文件僅僅保存數(shù)據(jù)記錄的地址。在MyISAM中,主索引和輔助索引(Secondary key)在結構上沒有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復。如果我們在Col2上建立一個輔助索引,則此索引的結構如下圖所示:

同樣也是一顆B+Tree,data域保存數(shù)據(jù)記錄的地址。因此,MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應數(shù)據(jù)記錄。

MyISAM的索引方式也叫做“非聚集”的,之所以這么稱呼是為了與InnoDB的聚集索引區(qū)分。

InnoDB索引實現(xiàn)

雖然InnoDB也使用B+Tree作為索引結構,但具體實現(xiàn)方式卻與MyISAM截然不同。

第一個重大區(qū)別是InnoDB的數(shù)據(jù)文件本身就是索引文件。從上文知道,MyISAM索引文件和數(shù)據(jù)文件是分離的,索引文件僅保存數(shù)據(jù)記錄的地址。而在InnoDB中,表數(shù)據(jù)文件本身就是按B+Tree組織的一個索引結構,這棵樹的葉節(jié)點data域保存了完整的數(shù)據(jù)記錄。這個索引的key是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。

上圖是InnoDB主索引(同時也是數(shù)據(jù)文件)的示意圖,可以看到葉節(jié)點包含了完整的數(shù)據(jù)記錄。這種索引叫做聚集索引。因為InnoDB的數(shù)據(jù)文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可以沒有),如果沒有顯式指定,則MySQL系統(tǒng)會自動選擇一個可以唯一標識數(shù)據(jù)記錄的列作為主鍵,如果不存在這種列,則MySQL自動為InnoDB表生成一個隱含字段作為主鍵,這個字段長度為6個字節(jié),類型為長整形。

第二個與MyISAM索引的不同是InnoDB的輔助索引data域存儲相應記錄主鍵的值而不是地址。換句話說,InnoDB的所有輔助索引都引用主鍵作為data域。例如,下圖為定義在Col3上的一個輔助索引:

這里以英文字符的ASCII碼作為比較準則。聚集索引這種實現(xiàn)方式使得按主鍵的搜索十分高效,但是輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然后用主鍵到主索引中檢索獲得記錄。

了解不同存儲引擎的索引實現(xiàn)方式對于正確使用和優(yōu)化索引都非常有幫助,例如知道了InnoDB的索引實現(xiàn)后,就很容易明白為什么不建議使用過長的字段作為主鍵,因為所有輔助索引都引用主索引,過長的主索引會令輔助索引變得過大。再例如,用非單調的字段作為主鍵在InnoDB中不是個好主意,因為InnoDB數(shù)據(jù)文件本身是一顆B+Tree,非單調的主鍵會造成在插入新記錄時數(shù)據(jù)文件為了維持B+Tree的特性而頻繁的分裂調整,十分低效,而使用自增字段作為主鍵則是一個很好的選擇。

如何建立合適的索引

建立索引的原理

一個最重要的原則是最左前綴原理,在提這個之前要先說下聯(lián)合索引,MySQL中的索引可以以一定順序引用多個列,這種索引叫做聯(lián)合索引,一般的,一個聯(lián)合索引是一個有序元組,其中各個元素均為數(shù)據(jù)表的一列。另外,單列索引可以看成聯(lián)合索引元素數(shù)為1的特例。

索引匹配的最左原則具體是說,假如索引列分別為A,B,C,順序也是A,B,C:

那么查詢的時候,如果查詢【A】【A,B】 【A,B,C】,那么可以通過索引查詢

如果查詢的時候,采用【A,C】,那么C這個雖然是索引,但是由于中間缺失了B,因此C這個索引是用不到的,只能用到A索引

如果查詢的時候,采用【B】 【B,C】 【C】,由于沒有用到第一列索引,不是最左前綴,那么后面的索引也是用不到了

如果查詢的時候,采用范圍查詢,并且是最左前綴,也就是第一列索引,那么可以用到索引,但是范圍后面的列無法用到索引

因為索引雖然加快了查詢速度,但索引也是有代價的:索引文件本身要消耗存儲空間,同時索引會加重插入、刪除和修改記錄時的負擔,另外,MySQL在運行時也要消耗資源維護索引,因此索引并不是越多越好

在使用InnoDB存儲引擎時,如果沒有特別的需要,請永遠使用一個與業(yè)務無關的自增字段作為主鍵。如果從數(shù)據(jù)庫索引優(yōu)化角度看,使用InnoDB引擎而不使用自增主鍵絕對是一個糟糕的主意。

InnoDB使用聚集索引,數(shù)據(jù)記錄本身被存于主索引(一顆B+Tree)的葉子節(jié)點上。這就要求同一個葉子節(jié)點內(大小為一個內存頁或磁盤頁)的各條數(shù)據(jù)記錄按主鍵順序存放,因此每當有一條新的記錄插入時,MySQL會根據(jù)其主鍵將其插入適當?shù)墓?jié)點和位置,如果頁面達到裝載因子(InnoDB默認為15/16),則開辟一個新的頁(節(jié)點)。如果表使用自增主鍵,那么每次插入新的記錄,記錄就會順序添加到當前索引節(jié)點的后續(xù)位置,當一頁寫滿,就會自動開辟一個新的頁。如下:

這樣就會形成一個緊湊的索引結構,近似順序填滿。由于每次插入時也不需要移動已有數(shù)據(jù),因此效率很高,也不會增加很多開銷在維護索引上。

如果使用非自增主鍵(如果身份證號或學號等),由于每次插入主鍵的值近似于隨機,因此每次新紀錄都要被插到現(xiàn)有索引頁得中間某個位置,如下:

此時MySQL不得不為了將新記錄插到合適位置而移動數(shù)據(jù),甚至目標頁面可能已經被回寫到磁盤上而從緩存中清掉,此時又要從磁盤上讀回來,這增加了很多開銷,同時頻繁的移動、分頁操作造成了大量的碎片,得到了不夠緊湊的索引結構,后續(xù)不得不通過OPTIMIZE TABLE來重建表并優(yōu)化填充頁面。

因此,只要可以,請盡量在InnoDB上采用自增字段做主鍵。

建立索引的常用技巧

1、最左前綴匹配原則,非常重要的原則,mysql會一直向右匹配直到遇到范圍查詢(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調整。

2、=和in可以亂序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意順序,mysql的查詢優(yōu)化器會幫你優(yōu)化成索引可以識別的形式

3、盡量選擇區(qū)分度高的列作為索引,區(qū)分度的公式是count(distinct col)/count(*),表示字段不重復的比例,比例越大我們掃描的記錄數(shù)越少,唯一鍵的區(qū)分度是1,而一些狀態(tài)、性別字段可能在大數(shù)據(jù)面前區(qū)分度就是0,那可能有人會問,這個比例有什么經驗值嗎?使用場景不同,這個值也很難確定,一般需要join的字段我們都要求是0.1以上,即平均1條掃描10條記錄

4、索引列不能參與計算,保持列“干凈”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很簡單,b+樹中存的都是數(shù)據(jù)表中的字段值,但進行檢索時,需要把所有元素都應用函數(shù)才能比較,顯然成本太大。所以語句應該寫成create_time = unix_timestamp(’2014-05-29’);

5、盡量的擴展索引,不要新建索引。比如表中已經有a的索引,現(xiàn)在要加(a,b)的索引,那么只需要修改原來的索引即可,當然要考慮原有數(shù)據(jù)和線上使用情況

MySQL優(yōu)化

配置優(yōu)化

配置優(yōu)化指的MySQL 的 server端的配置,一般對于業(yè)務方而言,可以不用關注,畢竟會有專門的DBA來處理,但是對于原理的了解,我想,我們開發(fā),是需要了解的。

基本配置

innodb_buffer_pool_size

這是安裝完InnoDB后第一個應該設置的選項。緩沖池是數(shù)據(jù)和索引緩存的地方:這個值越大越好,這能保證你在大多數(shù)的讀取操作時使用的是內存而不是硬盤。典型的值是5-6GB(8GB內存),20-25GB(32GB內存),100-120GB(128GB內存)。

innodb_log_file_size

這是redo日志的大小。redo日志被用于確保寫操作快速而可靠并且在崩潰時恢復。一直到MySQL 5.1,它都難于調整,因為一方面你想讓它更大來提高性能,另一方面你想讓它更小來使得崩潰后更快恢復。

幸運的是從MySQL 5.5之后,崩潰恢復的性能的到了很大提升,這樣你就可以同時擁有較高的寫入性能和崩潰恢復性能了。一直到MySQL 5.5,redo日志的總尺寸被限定在4GB(默認可以有2個log文件)。這在MySQL 5.6里被提高了。如果你知道你的應用程序需要頻繁的寫入數(shù)據(jù)并且你使用的時MySQL 5.6,你可以一開始就把它這是成4G。

max_connections

如果你經常看到‘Too many connections'錯誤,是因為max_connections的值太低了。這非常常見因為應用程序沒有正確的關閉數(shù)據(jù)庫連接,你需要比默認的151連接數(shù)更大的值。

max_connection值被設高了(例如1000或更高)之后一個主要缺陷是當服務器運行1000個或更高的活動事務時會變的沒有響應。在應用程序里使用連接池或者在MySQL里使用進程池有助于解決這一問題。

InnoDB配置

innodb_file_per_table

這項設置告知InnoDB是否需要將所有表的數(shù)據(jù)和索引存放在共享表空間里(innodb_file_per_table = OFF) 或者為每張表的數(shù)據(jù)單獨放在一個.ibd文件(innodb_file_per_table = ON)。每張表一個文件允許你在drop、truncate或者rebuild表時回收磁盤空間。

這對于一些高級特性也是有必要的,比如數(shù)據(jù)壓縮。但是它不會帶來任何性能收益。你不想讓每張表一個文件的主要場景是:有非常多的表(比如10k+)。MySQL 5.6中,這個屬性默認值是ON,因此大部分情況下你什么都不需要做。對于之前的版本你必需在加載數(shù)據(jù)之前將這個屬性設置為ON,因為它只對新創(chuàng)建的表有影響。

innodb_flush_log_at_trx_commit

默認值為1,表示InnoDB完全支持ACID特性。當你的主要關注點是數(shù)據(jù)安全的時候這個值是最合適的,比如在一個主節(jié)點上。但是對于磁盤(讀寫)速度較慢的系統(tǒng),它會帶來很巨大的開銷,因為每次將改變flush到redo日志都需要額外的fsyncs。

將它的值設置為2會導致不太可靠(reliable)因為提交的事務僅僅每秒才flush一次到redo日志,但對于一些場景是可以接受的,比如對于主節(jié)點的備份節(jié)點這個值是可以接受的。如果值為0速度就更快了,但在系統(tǒng)崩潰時可能丟失一些數(shù)據(jù):只適用于備份節(jié)點。

innodb_flush_method

這項配置決定了數(shù)據(jù)和日志寫入硬盤的方式。一般來說,如果你有硬件RAID控制器,并且其獨立緩存采用write-back機制,并有著電池斷電保護,那么應該設置配置為O_DIRECT;否則,大多數(shù)情況下應將其設為fdatasync(默認值)。sysbench是一個可以幫助你決定這個選項的好工具。

innodb_log_buffer_size

這項配置決定了為尚未執(zhí)行的事務分配的緩存。其默認值(1MB)一般來說已經夠用了,但是如果你的事務中包含有二進制大對象或者大文本字段的話,這點緩存很快就會被填滿并觸發(fā)額外的I/O操作。看看Innodb_log_waits狀態(tài)變量,如果它不是0,增加innodb_log_buffer_size。

其他設置

query_cache_size

query cache(查詢緩存)是一個眾所周知的瓶頸,甚至在并發(fā)并不多的時候也是如此。最佳選項是將其從一開始就停用,設置query_cache_size = 0(現(xiàn)在MySQL 5.6的默認值)并利用其他方法加速查詢:優(yōu)化索引、增加拷貝分散負載或者啟用額外的緩存(比如memcache或redis)。

如果你已經為你的應用啟用了query cache并且還沒有發(fā)現(xiàn)任何問題,query cache可能對你有用。這是如果你想停用它,那就得小心了。

log_bin

如果你想讓數(shù)據(jù)庫服務器充當主節(jié)點的備份節(jié)點,那么開啟二進制日志是必須的。如果這么做了之后,還別忘了設置server_id為一個唯一的值。就算只有一個服務器,如果你想做基于時間點的數(shù)據(jù)恢復,這(開啟二進制日志)也是很有用的:從你最近的備份中恢復(全量備份),并應用二進制日志中的修改(增量備份)。

二進制日志一旦創(chuàng)建就將永久保存。所以如果你不想讓磁盤空間耗盡,你可以用 PURGE BINARY LOGS 來清除舊文件,或者設置 expire_logs_days 來指定過多少天日志將被自動清除。記錄二進制日志不是沒有開銷的,所以如果你在一個非主節(jié)點的復制節(jié)點上不需要它的話,那么建議關閉這個選項。

skip_name_resolve

當客戶端連接數(shù)據(jù)庫服務器時,服務器會進行主機名解析,并且當DNS很慢時,建立連接也會很慢。因此建議在啟動服務器時關閉skip_name_resolve選項而不進行DNS查找。唯一的局限是之后GRANT語句中只能使用IP地址了,因此在添加這項設置到一個已有系統(tǒng)中必須格外小心。

SQL 調優(yōu)

一般要進行SQL調優(yōu),那么就說有慢查詢的SQL,系統(tǒng)或者server可以開啟慢查詢日志,尤其是線上系統(tǒng),一般都會開啟慢查詢日志,如果有慢查詢,可以通過日志來過濾。但是知道了有需要優(yōu)化的SQL后,下面要做的就是如何進行調優(yōu)

慢查詢優(yōu)化基本步驟

1、先運行看看是否真的很慢,注意設置SQL_NO_CACHE

2、where條件單表查,鎖定最小返回記錄表。這句話的意思是把查詢語句的where都應用到表中返回的記錄數(shù)最小的表開始查起,單表每個字段分別查詢,看哪個字段的區(qū)分度最高

3、explain查看執(zhí)行計劃,是否與1預期一致(從鎖定記錄較少的表開始查詢)

4、order by limit 形式的sql語句讓排序的表優(yōu)先查

5、了解業(yè)務方使用場景

6、加索引時參照建索引的幾大原則

7、觀察結果,不符合預期繼續(xù)從0分析

常用調優(yōu)手段

執(zhí)行計劃explain

在日常工作中,我們有時會開慢查詢去記錄一些執(zhí)行時間比較久的SQL語句,找出這些SQL語句并不意味著完事了,我們常常用到explain這個命令來查看一個這些SQL語句的執(zhí)行計劃,查看該SQL語句有沒有使用上了索引,有沒有做全表掃描,這都可以通過explain命令來查看。

所以我們深入了解MySQL的基于開銷的優(yōu)化器,還可以獲得很多可能被優(yōu)化器考慮到的訪問策略的細節(jié),以及當運行SQL語句時哪種策略預計會被優(yōu)化器采用。

使用explain 只需要在原有select 基礎上加上explain關鍵字就可以了,如下:

mysql> explain select * from servers; +----+-------------+---------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | servers | ALL | NULL | NULL | NULL | NULL | 1 | NULL | +----+-------------+---------+------+---------------+------+---------+------+------+-------+ 1 row in set (0.03 sec)

簡要解釋下explain各個字段的含義

id : 表示SQL執(zhí)行的順序的標識,SQL從大到小的執(zhí)行

select_type:表示查詢中每個select子句的類型

table:顯示這一行的數(shù)據(jù)是關于哪張表的,有時不是真實的表名字

type:表示MySQL在表中找到所需行的方式,又稱“訪問類型”。常用的類型有:ALL, index, range, ref, eq_ref, const, system, NULL(從左到右,性能從差到好)

possible_keys:指出MySQL能使用哪個索引在表中找到記錄,查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被查詢使用

Key:key列顯示MySQL實際決定使用的鍵(索引),如果沒有選擇索引,鍵是NULL。

key_len:表示索引中使用的字節(jié)數(shù),可通過該列計算查詢中使用的索引的長度(key_len顯示的值為索引字段的最大可能長度,并非實際使用長度,即key_len是根據(jù)表定義計算而得,不是通過表內檢索出的)

ref:表示上述表的連接匹配條件,即哪些列或常量被用于查找索引列上的值

rows:表示MySQL根據(jù)表統(tǒng)計信息及索引選用情況,估算的找到所需的記錄所需要讀取的行數(shù),理論上行數(shù)越少,查詢性能越好

Extra:該列包含MySQL解決查詢的詳細信息

EXPLAIN的特性

EXPLAIN不會告訴你關于觸發(fā)器、存儲過程的信息或用戶自定義函數(shù)對查詢的影響情況

EXPLAIN不考慮各種Cache

EXPLAIN不能顯示MySQL在執(zhí)行查詢時所作的優(yōu)化工作

部分統(tǒng)計信息是估算的,并非精確值

EXPALIN只能解釋SELECT操作,其他操作要重寫為SELECT后查看執(zhí)行計劃。

?

實戰(zhàn)演練

表結構和查詢語句

假如有如下表結構

circlemessage_idx_0 | CREATE TABLE `circlemessage_idx_0` (`circle_id` bigint(20) unsigned NOT NULL COMMENT '群組id',`from_id` bigint(20) unsigned NOT NULL COMMENT '發(fā)送用戶id',`to_id` bigint(20) unsigned NOT NULL COMMENT '指定接收用戶id',`msg_id` bigint(20) unsigned NOT NULL COMMENT '消息ID',`type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '消息類型',PRIMARY KEY (`msg_id`,`to_id`),KEY `idx_from_circle` (`from_id`,`circle_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

通過執(zhí)行計劃explain分析如下查詢語句

mysql> explain select msg_id from circlemessage_idx_0 where to_id = 113487 and circle_id=10019063 and msg_id>=6273803462253938690 and from_id != 113487 order by msg_id asc limit 30; +----+-------------+---------------------+-------+-------------------------+---------+---------+------+--------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------------------+-------+-------------------------+---------+---------+------+--------+-------------+ | 1 | SIMPLE | circlemessage_idx_0 | range | PRIMARY,idx_from_circle | PRIMARY | 16 | NULL | 349780 | Using where | +----+-------------+---------------------+-------+-------------------------+---------+---------+------+--------+-------------+ 1 row in set (0.00 sec) mysql> explain select msg_id from circlemessage_idx_0 where to_id = 113487 and circle_id=10019063 and from_id != 113487 order by msg_id asc limit 30; +----+-------------+---------------------+-------+-----------------+---------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------------------+-------+-----------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | circlemessage_idx_0 | index | idx_from_circle | PRIMARY | 16 | NULL | 30 | Using where | +----+-------------+---------------------+-------+-----------------+---------+---------+------+------+-------------+ 1 row in set (0.00 sec)

問題分析

通過上面兩個執(zhí)行計劃可以發(fā)現(xiàn)當沒有msg_id >= xxx這個查詢條件的時候,檢索的rows要少很多,并且兩者查詢的時候都用到了索引,而且用到的還只是主鍵索引。那說明索引應該是不合理的,沒有發(fā)揮最大作用。

分析這個執(zhí)行計劃可以看到,當包含msg_id >= xxx?查詢條件的時候,rows有34w多行,這種情況,說明檢索太多,要么就是表里面確實有這么大,要么就是索引不合理沒有用到索引,大都情況是沒用合理用到索引。列中所用到的索引也是PRIMARY,那就可能是(msg_id,to_id)的其中一個,注意我們建立表的時候msg_id索引的順序是在to_id前面的,因此MySQL查詢一定會優(yōu)先用msg_id索引,在使用了msg_id索引后,就已經檢索出了34w行,并且由于msg_id的查詢條件是大于等于,因此,再這個查詢條件后,就不能再用到to_id的索引。

然后再看key_len長度為16,結合 key為PRIMARY,那么可以分析得知,只有一個主鍵索引被用到。

最后看看 type 值,是range,那么就說明這個查詢要么是范圍查詢,要么就是多值匹配。

請注意,from_id != xxx這樣的語句,是無法用到索引的。只有from_id = xxx就可以用到所以,因此from id 的索引其實可以不用,建立索引的時候就要考慮清楚

如何優(yōu)化

既然知道索引不合理,那么就要分析并調整索引。一般而言,我們既然要從單表里面查詢,那么就需要能夠知道大體,單表里面大致會有哪些數(shù)據(jù),現(xiàn)在的量級大概是多少。

然后開始下一步的分析,既然msgid是被設置為了主鍵,那一定是全局唯一的,所有,有多少數(shù)據(jù)量就至少會有多少條msgid;那么檢索msg_id基本就是檢索整個表了。我們要做的優(yōu)化就是要盡量減少索引,減少查詢的行數(shù);那么就需要思考,通過查詢哪些字段才能夠減少行數(shù)?比如,一個張表里面,所屬某個用戶的數(shù)據(jù),會不會比查詢msgid的行數(shù)要少?查詢某個用戶并且是屬于某個圈子的,那會不會就更少了?等等。

然后根據(jù)實際情況分析,單表里面命中to_id 的行數(shù)應該是會小于命中msg_id的,因此要首先保證能夠使用到to_id的索引,為此,可以設置主鍵的時候把msg_id和to_id的順序交互一下;但是,由于已經是線上的表,已經有了大量數(shù)據(jù),并且業(yè)務開始運行,這種情況下,修改主鍵會引發(fā)很多問題(當然修改索引是OK的),因此,不建議直接修改主鍵。

那么,為了保證有效使用to_id的索引,就要新建一個聯(lián)合索引;那么新建的聯(lián)合索引的第一索引字段必然是to_id,針對此業(yè)務場景,最好能夠再加上circle_id索引,這樣可以快速索引;這樣就得到了新的聯(lián)合索引(to_id,circle_id)的索引,然后,因為要找msg_id,為此,在此基礎上,再加上msg_id。最終得到的聯(lián)合索引為(to_id,circle_id,msg_id);這樣的話,就能夠快速檢索這樣的查詢語句了:where to_id = xxx and circle_id = xxx and msgId >= xxx

當然,索引的建立,也不是說某個sql 語句需要啥索引,就建立某個聯(lián)合索引,這樣的話,索引太多的話,寫的性能受影響(插入、刪除、修改),然后存儲空間也會相應增大;另外mysql在運行時也會消耗資源維護索引,所以,索引并不是越多越好,需要結合查詢最頻繁、最影響性能的sql來建立合適的索引。需要再說明的是,一個聯(lián)合索引或者一組主鍵就是一個btree,多個索引就是多個btree

總結

首先我們需要深入理解索引的原理和實現(xiàn),當理解了原理后,才能夠更有助于我們建立合適的索引。然后我們建立索引的時候,不要想當然,要先想清楚業(yè)務邏輯,再建立對應的表結構和索引。需要再次強調如下幾點:

索引不是越多越好

區(qū)分主鍵和索引

理解索引結構原理

理解查詢索引規(guī)則

總結

以上是生活随笔為你收集整理的MySQL 索引和 SQL 调优手册的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产麻豆剧果冻传媒视频播放量 | 天天射天天干天天 | 欧美孕妇与黑人孕交 | 久久久亚洲网站 | 欧洲精品在线视频 | 香蕉视频免费在线播放 | 国产精品亚洲片在线播放 | 日韩超碰| 国产亚洲成人网 | 亚洲黄色免费观看 | 一区中文字幕在线观看 | 久久人人爽人人爽 | 久草在线手机观看 | 日韩中文在线视频 | 国产在线播放一区 | 黄色动态图xx| 狠狠88综合久久久久综合网 | 97精品超碰一区二区三区 | 日韩视频免费在线 | 极品嫩模被强到高潮呻吟91 | 黄色网在线播放 | 中文字幕久久精品一区 | v片在线看 | 日韩欧美国产精品 | 日批网站在线观看 | 亚洲精品国产精品国产 | 午夜丁香网 | 国产高清成人av | 国际精品网 | 99综合电影在线视频 | 91一区二区三区在线观看 | 日本女人逼 | 9免费视频 | 天天综合网 天天综合色 | 日韩69av| 久久国产影视 | 亚洲一区不卡视频 | 欧美a级片免费看 | 国产精品国产三级国产aⅴ入口 | 国产亚洲成人精品 | 国产精品麻豆99久久久久久 | 一区二区三区久久 | 午夜在线免费观看 | www.com.日本一级| 九九热精品国产 | 亚洲综合网站在线观看 | 一区二区三区国产精品 | 欧美日韩性| 久久久久久久久综合 | 国产专区精品视频 | 天天射综合网视频 | 国产精品igao视频网入口 | 2019中文字幕网站 | 久久精品资源 | 久久精品久久久久电影 | 91成人天堂久久成人 | 日韩欧美网址 | 欧美另类交在线观看 | 欧美久久久久 | 天天干天天操天天搞 | 91视频久久久 | 午夜性福利| 在线视频观看亚洲 | av网站手机在线观看 | 毛片网站免费在线观看 | 国产成人一区二区精品非洲 | 五月天婷婷丁香花 | 亚洲一区二区三区毛片 | 丝袜美腿在线播放 | 性色xxxxhd | 在线免费观看视频 | 成人一区影院 | 射射射综合网 | 精品国产一区二区三区久久久 | 国产精品久久久久一区 | 免费av网站在线 | 久久精品视频国产 | 青青久草在线 | 狠狠色噜噜狠狠 | 中文字幕精品一区二区三区电影 | 日日爽天天 | 玖玖在线观看视频 | 精品一区二区在线观看 | 久久久久久久久久久免费av | 久久久久成人免费 | 国产午夜精品免费一区二区三区视频 | 99久久日韩精品视频免费在线观看 | 成年人在线免费看视频 | 久久9999久久免费精品国产 | 97成人精品 | 精品在线视频一区 | 午夜久久久久 | 干天天 | 一区二区三区四区在线 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 九色视频网站 | 国产三级视频在线 | 免费观看www小视频的软件 | 伊人永久 | 91精品秘密在线观看 | av免费看在线 | 国产精品99久久久久久有的能看 | 色综合天天色综合 | 日韩在线免费播放 | 免费成人黄色av | 91在线精品播放 | 99r在线播放 | 在线视频电影 | 天天拍天天色 | 成人午夜网址 | 久久久久久国产精品亚洲78 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 中文字幕在线播放第一页 | 精品国产一区二区三区四区在线观看 | 最近中文字幕mv | 精品久久久久久电影 | 五月天色站| 最近中文字幕第一页 | 国语对白少妇爽91 | 免费激情在线电影 | 麻豆一精品传二传媒短视频 | 国产精品国内免费一区二区三区 | 亚洲精品在线视频播放 | 国产精品久久久久久久99 | 国产一区二区精品久久 | 1区2区3区在线观看 三级动图 | 久久久久国产一区二区三区四区 | 亚洲黄色在线播放 | 极品嫩模被强到高潮呻吟91 | 国产a级片免费观看 | 国产一区免费视频 | 成人a在线观看 | 国产精品自在欧美一区 | 一区二区三区在线播放 | 米奇四色影视 | 在线日韩av | 日韩精品在线免费播放 | 国产日韩欧美精品在线观看 | 亚洲精品在线视频网站 | 日本韩国精品一区二区在线观看 | 亚洲免费观看视频 | 国产综合精品一区二区三区 | 久热av | 精品国产综合区久久久久久 | 97国产人人 | 超碰97国产在线 | 国产精品精品 | 草久在线观看视频 | 日本福利视频在线 | 最新亚洲视频 | 69国产盗摄一区二区三区五区 | 黄色免费网战 | 色网站中文字幕 | 日本aaa在线观看 | 国产一区二区久久精品 | 亚洲女同ⅹxx女同tv | 九九日韩 | 深爱五月激情网 | 综合在线观看色 | 中文亚洲欧美日韩 | 国产亚洲精品久久久久久电影 | 国产免费一区二区三区最新 | www.888av| 久久久久女教师免费一区 | a成人v在线| 国产精品第一页在线观看 | 日韩动态视频 | 四虎永久视频 | 三级免费黄 | 久久国产一区二区三区 | 视频国产一区二区三区 | 久久成人国产精品入口 | 精品国产一区二区三区男人吃奶 | 在线va视频| 99视频导航 | 国产美女搞久久 | 亚洲欧洲日韩在线观看 | 91麻豆精品国产91久久久无限制版 | 亚洲无吗天堂 | 国产中文字幕在线免费观看 | 欧美精品二 | 久久久精品国产一区二区三区 | 狠狠色狠狠综合久久 | 精品久久五月天 | 国产精品欧美日韩 | 国产又粗又猛又黄又爽视频 | 色av资源网| 久久综合久久综合久久综合 | 色综合a| 人人dvd | 成人av资源网站 | 日韩免费视频一区二区 | 亚洲精品一区二区在线观看 | 久草视频在 | 天天天天爱天天躁 | 国产成人精品福利 | 久久精品视频播放 | 91视频亚洲 | 久久久久亚洲国产精品 | 在线播放精品一区二区三区 | 久久久免费高清视频 | 在线欧美最极品的av | 国产精品1区2区3区在线观看 | 500部大龄熟乱视频使用方法 | 久久国产精品视频 | 国产中文a | 亚洲女欲精品久久久久久久18 | 九色视频自拍 | 色爽网站 | 欧美一区二区精美视频 | 国产精品成人在线观看 | 亚洲 欧美日韩 国产 中文 | 亚洲久草视频 | 天天射天天干天天 | 香蕉精品在线观看 | 狠狠干网 | 97色在线| 色中色综合 | 99中文字幕视频 | 一区中文字幕在线观看 | 色橹橹欧美在线观看视频高清 | 亚洲国内精品在线 | 九九免费在线观看视频 | 国产黄在线播放 | 五月开心六月伊人色婷婷 | 欧美一级电影免费观看 | 伊人天天综合 | 深爱激情站 | 日韩电影在线观看一区二区三区 | 日韩在线观看视频中文字幕 | 久久视频这里只有精品 | 成人高清在线观看 | 欧美日韩一区二区三区免费视频 | av在线网站大全 | 亚洲精品视频第一页 | 天天操夜操 | 午夜国产福利视频 | 91视频在线国产 | 色综合久| 97视频在线观看免费 | 中文字幕在线观看视频免费 | 免费看污黄网站 | 在线小视频你懂的 | 国产精品女人久久久 | 国产精品资源 | 久久99国产精品免费网站 | 97日日碰人人模人人澡分享吧 | 成人播放器 | 91亚洲精品久久久蜜桃借种 | 日本久草电影 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 欧美精品久久久久久久久久白贞 | 九色91在线 | 中文字幕在线不卡国产视频 | 国产精品a级 | 国产一区二区三区在线 | a久久久久久 | 最新国产在线 | 国产精品视频地址 | 成人精品亚洲 | 久久国产精品99久久久久久丝袜 | 国产精品久久久久婷婷二区次 | 青青河边草观看完整版高清 | 国产精品免费小视频 | 91一区啪爱嗯打偷拍欧美 | 亚洲精品美女在线观看播放 | 久久精品电影院 | 黄色影院在线免费观看 | 日日久视频 | 日日夜夜天天综合 | 韩日三级在线 | 黄色片免费电影 | 国产在线中文字幕 | 一区二区三区精品在线 | av在线免费播放 | 91av视频免费观看 | 国产精品成人在线 | 精品在线一区二区三区 | 亚洲最新av网站 | 色99之美女主播在线视频 | 国产精品久久三 | 国产精品一区二区电影 | 婷婷六月中文字幕 | 久久激情视频 | av中文天堂| 亚洲国产成人av网 | 国产二区电影 | 一区二区三区高清在线观看 | 欧美色综合天天久久综合精品 | a黄色| 最新中文字幕 | 日日天天 | 91精品国产92久久久久 | 91成人免费看 | 久久撸在线视频 | 97av视频| 视频99爱 | 99久久精品免费视频 | 日韩在线首页 | 国产一区二区在线视频观看 | 国内精品久久久久久中文字幕 | 久久精品亚洲精品国产欧美 | 丁香视频在线观看 | 欧美成年人在线视频 | 国内精品久久久久影院优 | 亚洲视频1区2区 | 亚洲一区免费在线 | 中文字幕视频网站 | 九九热免费在线观看 | 日韩精品在线一区 | 91av视频免费在线观看 | 日韩网站视频 | av在线精品 | www.av中文字幕.com | 九九99靖品| 国产高清一 | 欧美大香线蕉线伊人久久 | 天天色综合天天 | 97超碰在线久草超碰在线观看 | 日韩精品高清视频 | 国产精品激情 | 国产一区在线看 | 五月婷在线观看 | 天天干天天怕 | 视频成人永久免费视频 | 日本中文字幕在线看 | 狠狠色2019综合网 | 国产精品久久久久三级 | 在线免费观看羞羞视频 | 久久久高清 | 日韩精品一区二区三区第95 | 日本丰满少妇免费一区 | 日日操天天操狠狠操 | 日本精品va在线观看 | 日本性久久| 激情黄色av| 中文字幕欧美日韩va免费视频 | 国产精品福利午夜在线观看 | 欧美精品做受xxx性少妇 | 久久精品网站视频 | 成人av在线电影 | 91日韩在线专区 | 91视频91自拍 | 911av视频 | 天天干天天操天天爱 | 日韩伦理片hd | 中文字幕中文字幕中文字幕 | 欧美日韩一区二区在线观看 | 四虎影视成人精品国库在线观看 | 国产福利91精品一区 | 天天操天天色天天射 | 狠狠激情中文字幕 | 91成人精品一区在线播放 | 婷婷丁香久久五月婷婷 | 欧美成人在线免费 | 亚洲综合在线视频 | 中文字幕日本在线 | 国产精品99久久久久久有的能看 | 日日日网 | 成人资源在线观看 | 天天操天天摸天天射 | 久久精品视频免费播放 | 国产精品人人做人人爽人人添 | 精品产品国产在线不卡 | 国产午夜三级一二三区 | 久久精品播放 | 五月天婷婷在线播放 | 国产精品一区二区中文字幕 | 久久精品中文字幕免费mv | 久久精品4 | 国产在线a视频 | 亚洲干视频在线观看 | 亚洲精品综合久久 | www,黄视频 | 伊人色综合网 | a黄色一级 | 午夜久久 | 精品福利国产 | 美女免费视频一区 | 日韩国产精品久久久久久亚洲 | 欧洲视频一区 | 久久精品国产亚洲 | av免费在线看网站 | 色视频在线免费 | 黄色日视频 | 超碰在线97观看 | 国产精品久久久久久久免费大片 | 免费国产在线精品 | 久久久99精品免费观看乱色 | 欧美精品久久 | 中文字幕一区二区三 | 五月天亚洲综合小说网 | 欧美视频日韩视频 | 久久精品看 | 2018好看的中文在线观看 | 国产精品久久久久久久久久三级 | av 一区二区三区四区 | 五月婷网 | 黄色免费高清视频 | 色综合天天狠天天透天天伊人 | 一区二区视频欧美 | 免费看毛片网站 | 国产精品一区二区三区在线播放 | 欧美日韩国产在线一区 | 在线观看亚洲国产精品 | 久久久久国产精品免费免费搜索 | 91久久丝袜国产露脸动漫 | 日韩网站免费观看 | 亚洲综合小说电影qvod | 狠狠干成人综合网 | 久久精彩 | 久久人人射 | 国产丝袜在线 | 中文字幕精品三级久久久 | 免费在线色视频 | 亚洲国产精品人久久电影 | 国产精品色 | 欧美一级片在线 | 网站免费黄色 | 国内精品在线看 | 免费高清在线视频一区· | 成人黄色在线视频 | 亚洲精品成人免费 | 夜夜操天天干 | 国产精品日韩高清 | 久久天天躁夜夜躁狠狠躁2022 | 亚洲精品综合欧美二区变态 | 成人精品影视 | 色婷婷电影网 | 国产无遮挡又黄又爽在线观看 | 国产欧美综合在线观看 | 成人久久18免费网站麻豆 | 久久视频免费在线观看 | 欧美精品久久久 | 天天曰天天爽 | 日本资源中文字幕在线 | 久久尤物电影视频在线观看 | 亚洲aⅴ在线观看 | 亚洲丁香日韩 | 狠狠色丁香婷婷综合基地 | 人人超碰人人 | 国产视频欧美视频 | 五月天中文在线 | 国产激情电影综合在线看 | 高清不卡一区二区在线 | 国产亚洲精品成人av久久ww | 一区av在线播放 | 国产一区二区三区在线免费观看 | www黄色com | 久久精品视频日本 | 69精品人人人人 | 国产精品99久久久久久人免费 | 亚洲精品视频免费看 | 韩国av免费观看 | 人人玩人人添人人 | 精品欧美一区二区三区久久久 | 天天在线免费视频 | 免费在线激情电影 | 久久资源在线 | 国产成人av在线影院 | 999久久久免费精品国产 | 成人免费视频视频在线观看 免费 | 丁香综合五月 | 欧美国产日韩激情 | 国产亚洲精品成人av久久影院 | 日韩高清不卡一区二区三区 | 国产又粗又猛又黄又爽视频 | 伊人春色电影网 | 中文超碰字幕 | 女人18精品一区二区三区 | 成人av高清在线观看 | 国产九色视频在线观看 | 久久久久久久久久久久久久av | 免费a级毛片在线看 | 久久手机看片 | 久久资源在线 | 在线观看 亚洲 | 国产在线一线 | 91精品国产成人观看 | 黄色在线网站噜噜噜 | 97人人模人人爽人人喊网 | 激情综合网在线观看 | 亚洲日本va午夜在线电影 | 福利网址在线观看 | 色综合综合 | 亚洲精品日韩一区二区电影 | 97人人澡人人添人人爽超碰 | 久久免费久久 | 五月天伊人 | 免费a一级 | 超碰人人在线观看 | 久久精品国产成人 | 欧美成人影音 | 欧美日韩xx | 久艹在线播放 | 一级欧美黄 | 麻豆视频免费网站 | 麻豆精品在线视频 | 国产精品美女久久久久久免费 | 久久久久久毛片精品免费不卡 | 中文字幕在线观看2018 | 成人禁用看黄a在线 | 国产精品毛片一区二区 | 九九在线视频 | 久草视频2 | 亚洲资源一区 | 在线国产99 | 久久短视频 | 精品国产一区二区三区蜜臀 | 国产在线视频一区二区 | 日韩av三区 | 91九色porny在线 | 韩国视频一区二区三区 | 成年一级片 | 狠狠激情中文字幕 | 99久久日韩精品视频免费在线观看 | 国产人免费人成免费视频 | 天天操夜夜操夜夜操 | 一区二区在线电影 | 亚洲精品视频网站在线观看 | 在线视频一二三 | 久久精品久久久久 | 日韩在线视频一区 | av福利第一导航 | 久要激情网 | 亚洲国产中文字幕在线视频综合 | 国产a免费| 久久精品小视频 | 亚洲视频在线免费看 | 日韩av一区二区在线播放 | 日日爽天天 | 欧美日韩在线视频观看 | 天天操天天干天天玩 | 亚洲天堂网在线播放 | 午夜视频一区二区三区 | 成人va视频 | 九九久久国产 | 99热国产精品 | 国产视频高清 | 麻豆果冻剧传媒在线播放 | 精品免费久久久久 | 97色噜噜 | 久久深夜福利免费观看 | 亚洲精品一区二区在线观看 | 欧美日韩国产亚洲乱码字幕 | 久久久久久久久久久久国产精品 | 色偷偷网站视频 | 久久成人精品视频 | 欧美老人xxxx18| 亚洲精品看片 | 久草视频一区 | 亚洲黄色免费在线 | 中文字幕亚洲精品在线观看 | 三级在线国产 | 久久国色夜色精品国产 | 97超碰资源总站 | 久久人人爽人人爽人人片av软件 | 四虎影视av | 成人黄性视频 | 亚洲欧美日韩精品久久奇米一区 | 成人一区二区三区中文字幕 | 国产99久久久欧美黑人 | 亚洲区视频在线 | 日本精品久久久久 | 国产精品高潮久久av | 亚州精品天堂中文字幕 | 在线a视频免费观看 | 婷婷色综合网 | 91一区二区三区久久久久国产乱 | 综合久久五月天 | 免费高清av在线看 | 成人黄色电影在线 | 五月婷婷在线视频观看 | 中文字幕大全 | 国产 中文 日韩 欧美 | 成年人电影免费在线观看 | 天天艹| 少妇bbb | 黄色成年 | 久久精品国产免费观看 | av成人动漫 | 天天综合区 | 精品久久美女 | 免费观看成人 | 免费特级黄色片 | 1024久久| 久久免费av电影 | 视频一区二区精品 | 天天干天天操天天入 | 天天夜夜操 | 国产高清中文字幕 | 夜夜躁天天躁很躁波 | 成人一区二区三区在线 | 特黄特色特刺激视频免费播放 | 五月激情五月激情 | 日韩免费一区二区三区 | av 一区二区三区 | 亚洲一区精品人人爽人人躁 | 亚洲国产精品小视频 | 美腿丝袜av | 久久你懂得 | 免费av观看| 亚洲国产精品成人精品 | 91在线精品视频 | 欧美日韩中文国产 | 999久久久久久 | 亚洲一区二区三区四区精品 | 国产香蕉视频在线观看 | 欧美成人精品三级在线观看播放 | 亚洲欧美日韩精品一区二区 | 亚洲国产wwwccc36天堂 | 成人性生交大片免费看中文网站 | 天天操夜夜操 | 青青草在久久免费久久免费 | 最近中文字幕高清字幕免费mv | 亚洲精品国产欧美在线观看 | 手机看片1042 | 亚洲精品中文字幕在线 | 在线国产视频 | 欧美日韩国产色综合一二三四 | 婷婷国产在线 | 欧美精品亚洲精品日韩精品 | 日韩精品一区二区在线视频 | 成人小视频在线免费观看 | 久久久99国产精品免费 | 久草在线视频精品 | 99久久超碰中文字幕伊人 | 国产原创91 | 日韩在线免费小视频 | 亚洲免费在线观看视频 | 国产精品av免费在线观看 | 久久久久久久久网站 | 国产精品一区在线 | 久久午夜视频 | 久久99在线 | 精品国产区在线 | 欧美a级成人淫片免费看 | 亚洲三级毛片 | 九九色视频 | 久久五月婷婷丁香 | 日韩中文字幕一区 | 亚洲日韩中文字幕在线播放 | 日本久久久精品视频 | 日韩精品免费一区 | 在线观看免费黄视频 | 欧美亚洲久久 | 精品96久久久久久中文字幕无 | 激情五月婷婷 | 人人草人 | 亚洲高清资源 | 免费观看十分钟 | 久久久久北条麻妃免费看 | 99精品视频免费观看视频 | 日韩狠狠操 | 成人av资源在线 | 五月激情天| 色丁香婷婷 | 全黄色一级片 | 97精品国产91久久久久久久 | 国产精品久久婷婷六月丁香 | 国产小视频网站 | 精品福利视频在线观看 | 伊人国产在线播放 | 久久a v视频 | 天天干,天天操 | av 一区 二区 久久 | 久久久久久久18 | 久久精品国产一区二区 | 亚洲做受高潮欧美裸体 | 久草手机视频 | 国产精品99久久久久久人免费 | 精品影院一区二区久久久 | 中文字幕日韩一区二区三区不卡 | 国产精品中文字幕av | 亚洲激情av | 特片网久久 | 很污的网站 | 欧美黄色免费 | 99久久精品免费视频 | 欧美日韩在线精品一区二区 | 在线观看国产亚洲 | 久久精品视频一 | 又大又硬又黄又爽视频在线观看 | 国产91粉嫩白浆在线观看 | 久久中文字幕视频 | 国产中文在线播放 | 国产精品嫩草影视久久久 | 一本大道久久精品懂色aⅴ 五月婷社区 | 免费日p视频| 啪啪免费视频网站 | 天操夜夜操 | 亚洲国产免费看 | 日韩精品视频在线观看网址 | 久草在线精品观看 | 麻豆一区二区 | 99精品乱码国产在线观看 | japanesexxxhd奶水 国产一区二区在线免费观看 | 中文区中文字幕免费看 | 欧美性色xo影院 | 丁香在线| 激情视频国产 | 91天堂在线观看 | 日韩欧美综合在线视频 | 人人爽人人香蕉 | 99久久激情 | 亚洲欧美精品一区二区 | 在线观看视频国产一区 | 国产原创在线 | 黄污视频网站大全 | 亚洲国产精品电影 | 国产一区在线视频播放 | 99免费在线观看 | 91av视频在线免费观看 | 亚洲电影一级黄 | 中文字幕一区二 | a黄在线观看 | 人人爽人人澡 | 曰本三级在线 | 国产视频在线观看一区 | 欧美日韩三级在线观看 | 国产福利一区二区三区视频 | 国产精品久久久一区二区 | 精品在线播放视频 | 色在线高清 | 久久婷婷精品视频 | 在线看成人 | 日韩在线高清视频 | 精品国产乱码久久久久久浪潮 | 精品一区精品二区高清 | 国产黄色播放 | 免费中文字幕 | 国产精品中文字幕在线 | 亚洲精品天天 | 91av超碰| 久久精品综合一区 | 久久久久久久久久网站 | 97成人精品视频在线观看 | 国产在线视频在线观看 | 91在线视频网址 | 手机在线看永久av片免费 | 91手机电视 | 免费看国产黄色 | 亚洲精品中文字幕在线 | 国产精品一区在线 | 成片免费观看视频大全 | 亚洲综合日韩在线 | 日韩av在线一区二区 | 国产精品免费观看久久 | av五月婷婷 | 九九热在线观看 | 欧美日韩精品在线观看视频 | 色婷婷影视 | 亚洲国产97在线精品一区 | 网站你懂的 | 欧美一级免费片 | 亚洲粉嫩av | 中文字幕国产精品 | 亚洲精品国产综合久久 | 国产一区二区三区免费观看视频 | 成人电影毛片 | 日韩乱色精品一区二区 | 国产精品久久免费看 | 色99久久| 天天爱天天干天天爽 | 天天色视频 | 国内精品久久久久影院一蜜桃 | 97视频免费在线观看 | 在线视频观看亚洲 | 中文字幕一区二区三区乱码不卡 | 久久9999久久免费精品国产 | 在线91色| 色婷婷免费视频 | 国产日韩精品在线 | 欧美aa在线 | 日韩毛片一区 | 99日精品 | 日韩高清一二三区 | 国产精品日韩精品 | 国产精品在线看 | 久久蜜臀av | 国产精品丝袜久久久久久久不卡 | 国产亚洲精品av | 国产成人l区 | av超碰免费在线 | 成人福利在线播放 | 日本精品视频在线观看 | 久久男人影院 | 久久久久久久99精品免费观看 | 久久久久久久久久久久久久av | 国产精品一区二区三区视频免费 | 怡春院av| 91久久爱热色涩涩 | 在线有码中文 | 中文字幕成人在线观看 | 一区二区三区免费在线 | 日本黄色免费观看 | 黄色午夜网站 | a天堂一码二码专区 | 亚洲婷婷网 | 久久第四色 | 国产69精品久久久久99尤 | 婷婷伊人五月天 | 成人动漫一区二区三区 | 在线视频观看成人 | 91日韩精品| 日日日日日 | 免费亚洲精品视频 | 草久在线观看视频 | 欧美日韩在线观看一区二区三区 | 五月天激情综合 | 97福利| 国产无遮挡又黄又爽馒头漫画 | 丁香一区二区 | 日韩在线观看第一页 | 日本中文字幕一二区观 | 欧美不卡视频在线 | 激情av网| 久草在线免费看视频 | 精品一区在线看 | 91亚洲精品国偷拍自产在线观看 | 日韩激情小视频 | 在线 高清 中文字幕 | 精品国产网址 | 国产一级黄 | 免费福利片2019潦草影视午夜 | 日韩综合一区二区三区 | 99爱这里只有精品 | 欧美日韩视频在线一区 | 日本最新高清不卡中文字幕 | 亚洲精选视频免费看 | 中文字幕在线免费97 | 中文字幕一区二区三区视频 | 久在线观看视频 | 国产精品美女久久久 | 国产大陆亚洲精品国产 | 久久夜视频| 在线欧美a| 久久久久免费精品国产小说色大师 | 国产成人精品一二三区 | 六月色丁香 | 久久只有精品 | 激情综合婷婷 | 91成人在线视频观看 | 2023亚洲精品国偷拍自产在线 | 欧美一级性 | 69精品 | 日韩av一区二区三区在线观看 | 看v片 | 天天干天天看 | 日韩性久久 | 国产免费又爽又刺激在线观看 | 四虎永久免费网站 | 在线激情影院一区 | www五月天婷婷 | 少妇性xxx | 91丨九色丨国产在线观看 | 精品一区二区免费在线观看 | 中文字幕中文字幕在线中文字幕三区 | 国产一级精品在线观看 | 亚洲一二三久久 | 欧美a级在线播放 | 亚洲aaa毛片 | www天天操| 国产99久久久国产精品免费二区 | 亚洲第一区在线播放 | 九九九在线观看视频 | 免费三级骚 | 久久爱综合 | 国产在线免费观看 | 欧美色一色 | 免费福利视频导航 | 精品欧美在线视频 | 狠狠干夜夜操天天爽 | 黄视频网站大全 | 国产在线观看,日本 | 黄色成人毛片 | 视频国产一区二区三区 | 欧美日韩国产免费视频 | 人人艹视频 | 五月天激情综合网 | 婷婷在线观看视频 | 精品亚洲视频在线观看 | 91九色蝌蚪视频网站 | 日韩欧美电影在线 | 男女精品久久 | 人人狠狠综合久久亚洲 | 欧美乱熟臀69xxxxxx | 免费视频国产 | 日韩av网页 | 丝袜一区在线 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 蜜桃麻豆www久久囤产精品 | 成人久久久电影 | 国产视频黄 | 国产日韩精品一区二区在线观看播放 | www.久久久.cum | 中文视频在线 | 亚洲成人黄色av | 色欲综合视频天天天 | 亚洲好视频 | 六月丁香色婷婷 | 黄在线免费看 | 一区二区三区 中文字幕 | 手机成人av | 成人黄色大片网站 | 久久免费av电影 | 亚洲精品tv| www.天天射 | 免费网站色 | 五月激情五月激情 | 亚洲综合激情小说 | 国产精品久久免费看 | 亚洲成人av片 | 成人av资源| 51久久成人国产精品麻豆 | 免费三级a | 欧美日韩精品在线观看视频 | 国产成人久久av977小说 | 伊人精品在线 | av一级久久 | 5月丁香婷婷综合 | 成全在线视频免费观看 | 日本h视频在线观看 | 国产黄色免费电影 | 国产精品96久久久久久吹潮 | 91久久精品一区二区三区 | 精品欧美乱码久久久久久 | 91av手机在线观看 | 欧美日韩国产欧美 | 日日操日日 | 日日日操操| 久久免费看a级毛毛片 | 深爱五月激情五月 | 人人网av | 日韩在线 一区二区 | 在线观看激情av | 日韩精品欧美精品 | 99久久久久久 | 久久精品女人毛片国产 | 99热在线国产精品 | 人人爽爽人人 | 超碰在线中文字幕 | 九九九免费视频 | 欧美成人黄色 | 中文在线资源 | 日韩毛片在线一区二区毛片 | 在线观看免费观看在线91 | 免费在线观看不卡av | 久久久久国产一区二区三区四区 | 成人国产精品久久久春色 | 在线草 | 国产97av| 91福利专区 | 久久综合一本 | 一区二区三区四区五区在线 | 色婷婷综合视频在线观看 | 色播99 | 欧美日韩xxxxx| 精品在线视频一区二区三区 | 少妇性aaaaaaaaa视频 | 国产精品亚洲片夜色在线 | 国产麻豆剧果冻传媒视频播放量 | 亚洲91av| 亚洲区另类春色综合小说校园片 | 国产99免费 | 国产高清视频色在线www | 青草草在线视频 | 亚洲伦理一区二区 | 又爽又黄又刺激的视频 | 日韩精品在线免费播放 | 成人在线观看免费 | 成人在线播放网站 | 亚洲黄电影 | 亚洲理论视频 | 97国产大学生情侣酒店的特点 | avove黑丝 | 免费黄色在线网址 | 黄色精品一区二区 | 精品国产99国产精品 | 中文有码在线 | 91久久精品日日躁夜夜躁国产 | 欧美日韩国产精品一区二区 | 狠狠的干狠狠的操 | 不卡视频在线 | 午夜精品久久久久久 | 91精品电影 | 国产精品手机在线 | 日本丶国产丶欧美色综合 | 麻豆久久一区二区 | 国产91小视频 | 人人澡人人添人人爽一区二区 | 亚洲综合欧美日韩狠狠色 | 天天插日日插 | 婷婷伊人五月 | 成人免费看片98欧美 | 日韩视频在线不卡 | 97人人模人人爽人人少妇 | 国产永久免费观看 |