MySQL手冊版本 5.0.20-MySQL最佳化(四) (1)_PHP教程

來源:互聯網
上載者:User
7.2.9 MySQL 如何最佳化 ORDER BY


在一些情況下,MySQL可以直接使用索引來滿足一個 ORDER BY 或 GROUP BY 子句而無需做額外的排序。


儘管 ORDER BY 不是和索引的順序準確匹配,索引還是可以被用到,只要不用的索引部分和所有的額外的 ORDER BY 欄位在 WHERE 子句中都被包括了。下列的幾個查詢都會使用索引來解決 ORDER BY 或 GROUP BY 部分:


SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;

SELECT * FROM t1 WHERE key_part1=constant ORDER BY key_part2;

SELECT * FROM t1 WHERE key_part1=constant GROUP BY key_part2;

SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;

SELECT * FROM t1

WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;

在另一些情況下,MySQL無法使用索引來滿足 ORDER BY,儘管它會使用索引來找到記錄來匹配 WHERE 子句。這些情況如下:


對不同的索引鍵做 ORDER BY :


SELECT * FROM t1 ORDER BY key1, key2;

在非連續的索引鍵部分上做 ORDER BY:


SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;

同時使用了 ASC 和 DESC:


SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

用於搜尋記錄的索引鍵和做 ORDER BY 的不是同一個:


SELECT * FROM t1 WHERE key2=constant ORDER BY key1;

有很多表一起做串連,而且讀取的記錄中在 ORDER BY 中的欄位都不全是來自第一個非常數的表中(也就是說,在 EXPLAIN 分析的結果中的第一個表的連線類型不是 const)。

http://www.bkjia.com/PHPjc/630969.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/630969.htmlTechArticle7.2.9 MySQL 如何最佳化 ORDER BY 在一些情況下,MySQL可以直接使用索引來滿足一個 ORDER BY 或 GROUP BY 子句而無需做額外的排序。 儘管 ORDER BY 不是和...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.