1. 程式人生 > >mysql order by 造成語句 執行計劃中Using filesort,Using temporary相關語句的優化解決

mysql order by 造成語句 執行計劃中Using filesort,Using temporary相關語句的優化解決

mysql> explain  select permission.* from t_rbac_permission   permission  inner JOIN  t_rbac_acl  acl  on acl.PERMISSION_ID=permission.ID  where  permission.menu=1 and acl.PRINCIPAL_TYPE=0     order by permission.create_date desc; +----+-------------+------------+--------+--------------------+---------+---------+-----------------------------+------+----------------------------------------------+ | id | select_type | table      | type   | possible_keys      | key     | key_len | ref                         | rows | Extra                                        | +----+-------------+------------+--------+--------------------+---------+---------+-----------------------------+------+----------------------------------------------+ |  1 | SIMPLE      | acl        | ALL    | FKE43AF088F9936F96 | NULL    | NULL    | NULL                        |   94 | Using where; Using temporary; Using filesort
 | |  1 | SIMPLE      | permission | eq_ref | PRIMARY            | PRIMARY | 98      | bs_common.acl.PERMISSION_ID |    1 | Using where                                  | +----+-------------+------------+--------+--------------------+---------+---------+-----------------------------+------+----------------------------------------------+ 2 rows in set (0.00 sec)  explain  select permission.* from t_rbac_permission   permission  inner JOIN  t_rbac_acl  acl     on acl.PERMISSION_ID=permission.IDwhere   permission.menu=1 and acl.PRINCIPAL_TYPE=0 
  ; +----+-------------+------------+--------+--------------------+---------+---------+-----------------------------+------+-------------+ | id | select_type | table      | type   | possible_keys      | key     | key_len | ref                         | rows | Extra       | +----+-------------+------------+--------+--------------------+---------+---------+-----------------------------+------+-------------+ |  1 | SIMPLE      | acl        | ALL    | FKE43AF088F9936F96 | NULL    | NULL    | NULL                        |   94 | Using where 
| |  1 | SIMPLE      | permission | eq_ref | PRIMARY            | PRIMARY | 98      | bs_common.acl.PERMISSION_ID |    1 | Using where | +----+-------------+------------+--------+--------------------+---------+---------+-----------------------------+------+-------------+ ????? why    加上  order by permission.create_date desc 的影響???   首先檢視相關欄位是否加上索引如 order by的欄位是否加上索引。加上索引之後單表查詢看如何??


ok 單表查詢還是Using filesort. 查詢相關資料進行組合索引試試看
ok,現在終結了,那麼試試連線查詢。各種測試結果如下: 

相關推薦

mysql order by 造成語句 執行計劃Using filesort,Using temporary相關語句優化解決

mysql> explain  select permission.* from t_rbac_permission   permission  inner JOIN  t_rbac_acl  acl  on acl.PERMISSION_ID=permissio

MysqlSQL優化執行計劃的連線方式淺釋

關係庫SQL調優中,雖然思路都是一樣的,具體方法和步驟也是大同小異,但細節卻不容忽視,尤其是執行計劃的具體細節的解讀中,各關係庫確實有區別,特別是mysql資料庫,與其他關係庫的差別更大些,下面,我們僅

MySQL 執行計劃Extra(Using where,Using index,Using index condition,Using index,Using where)的淺析

mysql> EXPLAIN    -> SELECT COUNT(*) FROM TEST WHERE i1 = 3 AND d = '2000-01-01';+----+-------------+-------+------+---------------+---------+-------

MySql】解讀EXPLAIN執行計劃的key_len 欄位大小的計算規則

解讀EXPLAIN執行計劃中的key_len導讀EXPLAIN中的key_len一列表示什麼意思,該如何解讀?EXPLAIN執行計劃中有一列 key_len 用於表示本次查詢中,所選擇的索引長度有多少位

mysql order by limit 問題

name hsb 出現 .cn cnblogs test mit width 1-1 問題 不使用limit時 使用limit出現問題了: 原因是出現相同值 gaoxiong 解決辦法:使用多個字段排序,上述例子可以改成 select * from hsb_test or

Mysql Order By 註入總結

lmap regexp 通過 img tab 引用 情況 man ide 前言 最近在做一些漏洞盒子後臺項目的總結,在盒子多期眾測項目中,發現註入類的漏洞占比較大。其中Order By註入型的漏洞也占挺大一部分比例,這類漏洞也是白帽子樂意提交的類型(獎金高、被過濾概率小)

SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1語句執行計劃預估原理

create p s 總結 字段 不用 value tar 再次 char   現實中遇到過到這麽一種情況:   在某些特殊場景下:進行查詢的時候,加了TOP 1比不加TOP 1要慢(而且是慢很多)的情況,   也就是說對於符合條件的某種的數據,查詢1條(符合該條件)數據比

mysql order by 多個字段

out jsb fonts gravity nts order by water size mar 下圖是只加了一個排序的結果: 可以看到,單一字段是沒問題的。如果加入c2呢?下圖是c2 可以發現,這裏的orderby是先按c1增序,然後對於按c1排好序以後的相同的元素

mysql ORDER BY,GROUP BY 和DISTINCT原理

如果 str reat 個數 需要 是我 如何 where子句 三種 前言 除了常規的Join語句之外,還有一類Query語句也是使用比較頻繁的,那就是ORDERBY,GROUP BY以及DISTINCT這三類查詢。考慮到這三類查詢都涉及到數據的排序等操作,所以我將他們放在

Mysql Order By 字符串排序,mysql 字符串order by

-s 解決方案 tro sign 如果 開始 itl 描述 star Mysql Order By 字符串排序,mysql 字符串order by ============================== ?Copyright 蕃薯耀 2017年9月30日 http

mysql order by多個字段

sel 字段排序 div 默認 sele strong spa 關鍵字 asc Mysql order by 多字段排序 mysql單個字段降序排序: select * from table order by id desc; mysql單個字段升序排序:

( 轉 ) MySQL高級 之 explain執行計劃詳解

ont dex 常見 fulltext lte name system details 無法 使用explain關鍵字可以模擬優化器執行SQL查詢語句,從而知道MySQL是如何處理你的SQL語句的,分析你的查詢語句或是表結構的性能瓶頸。 explain執行計劃包含的信息

MySQL EXPLAIN 命令: 檢視查詢執行計劃

MySQL 的 EXPLAIN 命令可以檢視SELECT語句的執行的計劃,是 MySQL 查詢優化的必備工具。 通過執行計劃可以瞭解查詢方式、索引使用情況、需要掃描的資料量以及是否需要臨時表或排序操作等資訊。 我們需要分析執行計劃對查詢進行有的放矢的優化。 需要注意: EXPL

mysql order by 中文排序

【中文排序】mysql order by 中文排序 1. 在MySQL中,我們經常會對一個欄位進行排序查詢,但進行中文排序和查詢的時候,對漢字的排序和查詢結果往往都是錯誤的。 這種情況在MySQL的很多版本中都存在。 如果這個問題不解決,那麼MySQL將無法實際處理中文。 出現這個問題的原因

MySQL ORDER BY程式碼筆記

mysql> select * from testB; +----+-------+---------+------------+ | id | name | address | time | +----+-------+---------+------------+ | 1

mysql order by rand() 效率優化方法

                     mysql order by rand() 效率優化方法   轉載:https://blog.csdn.net/fdipzone/

mysql order by field 按指定欄位排序

舉個例子 a表裡有b欄位 b欄位裡有資料-1,1,2,3,4 如果想把4,2,3的排在最前面,其他的排在後面,並且保留4,2,3的順序 sql: select * from a order by FIELD(3,2,4) DESC 如果是這樣寫sql: s

mysql order by不起作用各種型別排序說明

當你有一天發現order by不起作用, 首先不要懷疑跟索引啊,主鍵啊,反正一堆亂七八糟的想法。 其實排序正常只有int型別才起作用 所以你只需要看一看排序的欄位型別就好 下面說說幾種排序 數字 型別:order by 欄位  排序方式 字串型別:order b

MySQL Order By 使用方法

在MySQL中的Order By 有2種排序實現方式 利用有序索引獲取有序資料 檔案排序 索引排序 取出滿足過濾條件、作為排序條件的欄位,以及可以直接定位到行資料的行指標資訊,在 Sort Buffer 中進行實際的排序操作,然後利用排好序的資料根據行指標資訊返回表中取

MySQL Order By實現原理分析和Filesort優化

. 目錄(?)[-] 在MySQL中的ORDER BY有兩種排序實現方式: 1、利用有序索引獲取有序資料 2、檔案排序 在使用explain分析查詢的時候,利用有序索引獲取有序資料顯示Using index。而檔案排序顯示Using filesort。 1.利