Mysql中limit的优化
在一些情況中,當(dāng)你使用LIMIT row_count而不使用HAVING時,MySQL將以不同方式處理查詢。
·???????? 如果你用LIMIT只選擇一些行,當(dāng)MySQL選擇做完整的表掃描時,它將在一些情況下使用索引。
·???????? 如果你使用LIMIT row_count與ORDER BY,MySQL一旦找到了排序結(jié)果的第一個row_count行,將結(jié)束排序而不是排序整個表。如果使用索引,將很快。如果必須進行文件排序(filesort),必須選擇所有匹配查詢沒有LIMIT子句的行,并且在確定已經(jīng)找到第1個row_count行前,必須對它們的大部分進行排序。在任何一種情況下,一旦找到了行,則不需要再排序結(jié)果的其它部分,并且MySQL不再進行排序。
·???????? 當(dāng)結(jié)合LIMIT row_count和DISTINCT時,MySQL一旦找到row_count個唯一的行,它將停止。
·???????? 在一些情況下,GROUP BY能通過順序讀取鍵(或在鍵上做排序)來解決,然后計算摘要直到關(guān)鍵字的值改變。在這種情況下,LIMIT row_count將不計算任何不必要的GROUP BY值。
·???????? 只要MySQL已經(jīng)發(fā)送了需要的行數(shù)到客戶,它將放棄查詢,除非你正使用SQL_CALC_FOUND_ROWS。
·???????? LIMIT 0將總是快速返回一個空集合。這對檢查查詢的有效性是有用的。當(dāng)使用MySQL API時,它也可以用來得到結(jié)果列的列類型。(該技巧在MySQL Monitor中不工作,只顯示Empty set;應(yīng)使用SHOW COLUMNS或DESCRIBE)。
·???????? 當(dāng)服務(wù)器使用臨時表來進行查詢時,使用LIMIT row_count子句來計算需要多少空間。
?
總結(jié)
以上是生活随笔為你收集整理的Mysql中limit的优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux文件系统概念目录结构
- 下一篇: 运维同步rsync