最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql之EXPLAIN顯示using filesort介紹

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

EXPLAIN tbl_name 語(yǔ)法和 DESCRIBE tbl_name 或 SHOW COLUMNS FROM tbl_name 一樣。

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

以下信息為引用:

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

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

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

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

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

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

相關(guān)文章

  • MySQL 日期時(shí)間格式化函數(shù) DATE_FORMAT() 的使用示例詳解

    MySQL 日期時(shí)間格式化函數(shù) DATE_FORMAT() 的使用示例詳解

    `DATE_FORMAT()`是MySQL中用于格式化日期時(shí)間的函數(shù),本文詳細(xì)介紹了其語(yǔ)法、格式化字符串的含義以及常見(jiàn)日期時(shí)間格式組合,感興趣的朋友一起看看吧
    2025-03-03
  • windows和linux安裝mysql后啟用日志管理功能的方法

    windows和linux安裝mysql后啟用日志管理功能的方法

    在默認(rèn)情況下,mysql安裝后是沒(méi)有啟用日志管理功能的,這給維護(hù)帶來(lái)很多不便的地方,下面介紹windows和linux安裝mysql后啟用日志管理功能的方法
    2014-01-01
  • MySQL DeadLock故障排查全過(guò)程記錄

    MySQL DeadLock故障排查全過(guò)程記錄

    這篇文章主要給大家介紹了關(guān)于MySQL DeadLock故障排查的全過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • MySQL5.7并行復(fù)制原理及實(shí)現(xiàn)

    MySQL5.7并行復(fù)制原理及實(shí)現(xiàn)

    MySQL 5.7并行復(fù)制的思想簡(jiǎn)單易懂,本文就詳細(xì)的介紹了MySQL5.7并行復(fù)制原理及實(shí)現(xiàn),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 淺談開(kāi)啟magic_quote_gpc后的sql注入攻擊與防范

    淺談開(kāi)啟magic_quote_gpc后的sql注入攻擊與防范

    通過(guò)啟用php.ini配置文件中的相關(guān)選項(xiàng),就可以將大部分想利用SQL注入漏洞的駭客拒絕于門(mén)外
    2012-01-01
  • Mysql中的join操作

    Mysql中的join操作

    這篇文章主要介紹了Mysql join操作的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • MySQL實(shí)現(xiàn)樂(lè)觀鎖的方式詳解

    MySQL實(shí)現(xiàn)樂(lè)觀鎖的方式詳解

    在 MySQL 中,可以通過(guò)使用樂(lè)觀鎖來(lái)實(shí)現(xiàn)并發(fā)控制,以避免數(shù)據(jù)沖突和并發(fā)更新問(wèn)題,樂(lè)觀鎖是一種樂(lè)觀的思想,它假設(shè)并發(fā)操作不會(huì)導(dǎo)致沖突,只有在提交更新時(shí)才會(huì)檢查是否發(fā)生沖突,本文給大家介紹了Mysql如何實(shí)現(xiàn)樂(lè)觀鎖,需要的朋友可以參考下
    2023-09-09
  • MySQL SQL 語(yǔ)法參考

    MySQL SQL 語(yǔ)法參考

    MySQL SQL 語(yǔ)法參考...
    2006-12-12
  • MySQL 5.5.49 大內(nèi)存優(yōu)化配置文件優(yōu)化詳解

    MySQL 5.5.49 大內(nèi)存優(yōu)化配置文件優(yōu)化詳解

    最近mysql服務(wù)器升級(jí)到了MySQL 5.5.49版本,性能比mysql 5.0.**肯定效率高了不少,但mysql的默認(rèn)配置文件不合理,這里是針對(duì)大內(nèi)存訪問(wèn)量大的機(jī)器的配置方案,需要的朋友可以參考下
    2016-05-05
  • SQL使用WHERE條件語(yǔ)句的項(xiàng)目實(shí)踐

    SQL使用WHERE條件語(yǔ)句的項(xiàng)目實(shí)踐

    本文將介紹WHERE子句中使用的通用語(yǔ)法,它還將概述如何在單個(gè)WHERE子句中組合多個(gè)搜索條件謂詞以更細(xì)粒度的方式過(guò)濾數(shù)據(jù),以及如何使用NOT操作符排除而不是包含滿(mǎn)足給定搜索條件的行,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

新丰县| 敦煌市| 华容县| 绍兴县| 富顺县| 铁力市| 遵化市| 旬邑县| 都兰县| 沙坪坝区| 呼图壁县| 栖霞市| 璧山县| 武宣县| 庆安县| 务川| 余干县| 东丽区| 贵州省| 平潭县| 天台县| 重庆市| 黔东| 黑水县| 荣昌县| 广昌县| 巴林左旗| 垫江县| 望都县| 峨边| 鲜城| 清涧县| 高要市| 精河县| 合阳县| 临安市| 云林县| 饶平县| 瑞昌市| 阿尔山市| 新营市|