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

一文帶你理解MySql中explain結(jié)果filtered

 更新時間:2022年09月09日 14:55:00   作者:xszhaobo  
使用EXPLAIN關(guān)鍵字可以模擬優(yōu)化器執(zhí)行SQL查詢語句,從而知道MySQL是如何處理你的SQL語句的,下面這篇文章主要給大家介紹了關(guān)于MySql中explain結(jié)果filtered的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

MySql explain語句的返回結(jié)果中,filtered字段要怎么理解?

MySql5.7官方文檔中描述如下:

The filtered column indicates an estimated percentage of table rows filtered by the table condition. The maximum value is 100, which means no filtering of rows occurred. Values decreasing from 100 indicate increasing amounts of filtering. rows shows the estimated number of rows examined and rows × filtered shows the number of rows joined with the following table. For example, if rows is 1000 and filtered is 50.00 (50%), the number of rows to be joined with the following table is 1000 × 50% = 500.

這段文字不是很好理解,舉例來說,有如下三個查詢語句的explain結(jié)果,針對b和c表的顯示filtered是100,而針對a表的顯示是18。

+-------------+-------+--------+---------+---------+------+----------+
| select_type | table | type   | key     | key_len | rows | filtered |
+-------------+-------+--------+---------+---------+------+----------+
| PRIMARY     | a     | range  | search  | 4       |  174 |   18.00  |
| PRIMARY     | b     | eq_ref | PRIMARY | 4       |    1 |   100.00 |
| PRIMARY     | c     | ALL    | PRIMARY | 4       |    1 |   100.00 |

我們可以怎么理解filtered的值呢?從filtered的值中得出什么結(jié)論呢?到底是100更好還是18更好?

首先,這里的filtered表示通過查詢條件獲取的最終記錄行數(shù)占通過type字段指明的搜索方式搜索出來的記錄行數(shù)的百分比。

以上圖的第一條語句為例,MySQL首先使用索引(這里的type是range)掃描表a,預(yù)計會得到174條記錄,也就是rows列展示的記錄數(shù)。接下來MySql會使用額外的查詢條件對這174行記錄做二次過濾,最終得到符合查詢語句的32條記錄,也就是174條記錄的18%。而18%就是filtered的值。

更完美的情況下,應(yīng)該是使用某個索引,直接搜索出32條記錄并且過濾掉另外82%的記錄。

因此一個比較低filtered值表示需要有一個更好的索引,假如type=all,表示以全表掃描的方式得到1000條記錄,且filtered=0.1%,表示只有1條記錄是符合搜索條件的。此時如果加一個索引可以直接搜出來1條數(shù)據(jù),那么filtered就可以提升到100%。

由此可見,filtered=100%確實是要比18%要好。

當然,filtered不是萬能的,關(guān)注執(zhí)行計劃結(jié)果中其他列的值并優(yōu)化查詢更重要。比如為了避免出現(xiàn)filesort(使用可以滿足order by的索引),即使filtered的值比較低也沒問題。再比如上面filtered=0.1%的場景,我們更應(yīng)該關(guān)注的是添加一個索引提高查詢性能,而不是看filtered的值。

參考內(nèi)容:

MySQL :: MySQL 5.7 Reference Manual :: 8.8.2 EXPLAIN Output Format

innodb - What is the meaning of filtered in MySQL explain? - Database Administrators Stack Exchange

總結(jié) 

到此這篇關(guān)于MySql中explain結(jié)果filtered的文章就介紹到這了,更多相關(guān)MySql中explain結(jié)果filtered內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL?datetime類型與時間、日期格式字符串大小比較的方法

    MySQL?datetime類型與時間、日期格式字符串大小比較的方法

    這篇文章主要介紹了MySQL?datetime類型與時間、日期格式字符串大小比較,本文使用的是mysql8.0.27版本,其他版本自測一下,結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • MySQL 5.6 中 TIMESTAMP 的變化分析

    MySQL 5.6 中 TIMESTAMP 的變化分析

    這篇文章主要介紹了MySQL 5.6 中 TIMESTAMP 的變化分析,需要的朋友可以參考下
    2015-08-08
  • MySQL分組查詢Group By實現(xiàn)原理詳解

    MySQL分組查詢Group By實現(xiàn)原理詳解

    在MySQL 中,GROUP BY 的實現(xiàn)同樣有多種(三種)方式,其中有兩種方式會利用現(xiàn)有的索引信息來完成 GROUP BY,另外一種為完全無法使用索引的場景下使用。下面我們分別針對這三種實現(xiàn)方式做一個分析
    2016-05-05
  • mysql數(shù)據(jù)庫單表最大存儲依據(jù)詳解

    mysql數(shù)據(jù)庫單表最大存儲依據(jù)詳解

    這篇文章主要為大家介紹了mysql數(shù)據(jù)庫單表最大存儲的依據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法

    淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法

    本文主要介紹了淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • win8.1安裝mysql5.6時遇到問題解決方案

    win8.1安裝mysql5.6時遇到問題解決方案

    本文主要記錄的是作者在win8.1安裝mysql5.6時遇到問題的解決方案,網(wǎng)上查了很多方法都沒能解決,這里把最后的方法分享給大家
    2016-10-10
  • 如何選擇合適的MySQL存儲引擎

    如何選擇合適的MySQL存儲引擎

    MySQL有多種存儲引擎,MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。
    2011-09-09
  • 詳解Mysql中日期比較大小的方法

    詳解Mysql中日期比較大小的方法

    這篇文章主要介紹了Mysql中日期比較大小的方法,需要的朋友可以參考下
    2018-04-04
  • mysql的虛擬表(DUAL)的介紹及使用場景

    mysql的虛擬表(DUAL)的介紹及使用場景

    本文主要介紹了mysql的虛擬表(DUAL)的介紹及使用場景,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Mysql version can not be less than 4.1 出錯解決辦法

    Mysql version can not be less than 4.1 出錯解決辦法

    這篇文章主要介紹了Mysql version can not be less than 4.1 解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評論

连城县| 德兴市| 宝应县| 茌平县| 密山市| 枣强县| 河源市| 松江区| 酒泉市| 雷山县| 海原县| 泰宁县| 寿光市| 应城市| 台北县| 盐池县| 大港区| 奈曼旗| 阿城市| 遵义县| 曲靖市| 长顺县| 中山市| 招远市| 静安区| 出国| 沧源| 潍坊市| 汾阳市| 正蓝旗| 宾川县| 阳信县| 翼城县| 彩票| 南陵县| 昔阳县| 乾安县| 谢通门县| 保定市| 信宜市| 成武县|