欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql之EXPLAIN顯示using filesort介紹

 更新時間:2012年02月27日 22:08:06   作者:  
EXPLAIN 是mysql解釋select查詢的一個關(guān)鍵字,可以很方便的用于調(diào)試
語法格式如下
EXPLAIN tbl_name
或者:
EXPLAIN SELECT select_options
EXPLAIN 語句可以被當(dāng)作 DESCRIBE 的同義詞來用,也可以用來獲取一個MySQL要執(zhí)行的 SELECT 語句的相關(guān)信息。

EXPLAIN tbl_name 語法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。

當(dāng)在一個 SELECT 語句前使用關(guān)鍵字 EXPLAIN 時,MYSQL會解釋了即將如何運(yùn)行該 SELECT 語句,它顯示了表如何連接、連接的順序等信息。

以下信息為引用:

在explain我們所使用的sql的時候,經(jīng)常會遇到using filesort這種情況,原以為是由于有相同列值的原因引起,結(jié)果昨天看到公司的一個sql,跟同事討論了下加上自己又做了一些測試,突然發(fā)現(xiàn)自己原來的想法是錯誤的。

首先,只有在order by 數(shù)據(jù)列的時候才可能會出現(xiàn)using filesort,而且如果你不對進(jìn)行order by的這一列設(shè)置索引的話,無論列值是否有相同的都會出現(xiàn)using filesort。因此,只要用到order by 的這一列都應(yīng)該為其建立一個索引。

其次,在這次測試中,使用了一個稍微有點(diǎn)復(fù)雜的例子來說明這個問題,下面詳細(xì)用這個例子說一下:

SELECT * FROM DB.TB WHERE ID=2222 AND FID IN (9,8,3,13,38,40) ORDER BY INVERSE_DATE LIMIT 0, 5
里面建立的索引為一個三列的多列索引:IDX(ID,FID ,INVERSE_DATE) 。INVERSE_DATE這個是時間的反向索引。

對于這個sql我當(dāng)時最開始認(rèn)為應(yīng)該是個優(yōu)化好的狀態(tài),應(yīng)該沒有什么紕漏了,結(jié)果一explain才發(fā)現(xiàn)竟然出現(xiàn)了:Using where; Using filesort。

為什么呢,后來經(jīng)過分析才得知,原來在多列索引在建立的時候是以B-樹結(jié)構(gòu)建立的,因此建立索引的時候是先建立ID的按順序排的索引,在相同ID的情況下建立FID按 順序排的索引,最后在FID 相同的情況下建立按INVERSE_DATE順序排的索引,如果列數(shù)更多以此類推。有了這個理論依據(jù)我們可以看出在這個sql使用這個IDX索引的時候只是用在了order by之前,order by INVERSE_DATE 實(shí)際上是using filesort出來的。。汗死了。。因此如果我們要在優(yōu)化一下這個sql就應(yīng)該為它建立另一個索引IDX(ID,INVERSE_DATE),這樣就消除了using filesort速度也會快很多。問題終于解決了。

相關(guān)文章

  • Mysql5.7如何修改root密碼

    Mysql5.7如何修改root密碼

    mysql修改管理員root的密碼是個很常見的問題了,網(wǎng)上也有很多的教程,然而新版的MYSQL5.7卻能使用之前的教程,小編經(jīng)過一番摸索,才找到了修改辦法,這里分享給大家。
    2016-01-01
  • Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解

    Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解

    這篇文章主要介紹了Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考解決價值,需要的朋友可以參考下
    2019-06-06
  • 關(guān)于MySQL中datetime和timestamp的區(qū)別解析

    關(guān)于MySQL中datetime和timestamp的區(qū)別解析

    在MySQL中一些日期字段的類型選擇為datetime和timestamp,那么對于這兩種類型不同的應(yīng)用場景是什么呢,這篇文章主要介紹了關(guān)于MySQL中datetime和timestamp的區(qū)別解析,需要的朋友可以參考下
    2023-06-06
  • Mysql覆蓋索引詳解

    Mysql覆蓋索引詳解

    今天小編就為大家分享一篇關(guān)于Mysql覆蓋索引詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL中distinct和group?by去重效率區(qū)別淺析

    MySQL中distinct和group?by去重效率區(qū)別淺析

    distinct 與 group by均可用于去重,下面這篇文章主要給大家介紹了關(guān)于MySQL中distinct和group?by去重效率區(qū)別的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • MySQL數(shù)據(jù)庫使用規(guī)范總結(jié)

    MySQL數(shù)據(jù)庫使用規(guī)范總結(jié)

    本篇文章給大家詳細(xì)分類總結(jié)了數(shù)據(jù)庫相關(guān)規(guī)范,幫助大家發(fā)揮出數(shù)據(jù)庫的性能,感興趣的朋友可以了解下
    2020-08-08
  • MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧

    MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧

    這篇文章主要介紹了MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Mac上安裝Mysql的詳細(xì)步驟及配置

    Mac上安裝Mysql的詳細(xì)步驟及配置

    這篇文章主要給大家介紹了關(guān)于Mac上安裝Mysql的詳細(xì)步驟及配置,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-02-02
  • 詳解MySQL數(shù)據(jù)庫之觸發(fā)器

    詳解MySQL數(shù)據(jù)庫之觸發(fā)器

    這篇文章主要介紹了MySQL數(shù)據(jù)庫之觸發(fā)器的相關(guān)資料,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-09-09
  • SQL Server數(shù)據(jù)庫錯誤5123解決方案

    SQL Server數(shù)據(jù)庫錯誤5123解決方案

    這篇文章主要介紹了SQL Server數(shù)據(jù)庫錯誤5123解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06

最新評論