MySQL如何最佳化LIMIT

來源:互聯網
上載者:User

MySQL如何最佳化LIMIT

在一些情況中,當你使用LIMIT row_count而不使用HAVING時,MySQL將以不同方式處理查詢。

·         如果你用LIMIT只選擇一些行,當MySQL選擇做完整的表掃描時,它將在一些情況下使用索引。

·         如果你使用LIMIT row_count與ORDER BY,MySQL一旦找到了排序結果的第一個row_count行,將結束排序而不是排序整個表。如果使用索引,將很快。如果必須進行檔案排序(filesort),必須選擇所有匹配查詢沒有LIMIT子句的行,並且在確定已經找到第1個row_count行前,必須對它們的大部分進行排序。在任何一種情況下,一旦找到了行,則不需要再排序結果的其它部分,並且MySQL不再進行排序。

·         當結合LIMIT row_count和DISTINCT時,MySQL一旦找到row_count個唯一的行,它將停止。

·         在一些情況下,GROUP BY能通過順序讀取鍵(或在鍵上做排序)來解決,然後計算摘要直到關鍵字的值改變。在這種情況下,LIMIT row_count將不計算任何不必要的GROUP BY值。

·         只要MySQL已經發送了需要的行數到客戶,它將放棄查詢,除非你正使用SQL_CALC_FOUND_ROWS。

·         LIMIT 0將總是快速返回一個空集合。這對檢查查詢的有效性是有用的。當使用MySQL API時,它也可以用來得到結果列的列類型。(該技巧在MySQL Monitor中不工作,只顯示Empty set;應使用SHOW COLUMNS或DESCRIBE)。

·         當伺服器使用暫存資料表來進行查詢時,使用LIMIT row_count子句來計算需要多少空間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.