MySQL如何優(yōu)化LIMIT |
發(fā)布時(shí)間: 2012/8/30 17:23:53 |
在一些情況中,當(dāng)你使用LIMIT row_count而不使用HAVING時(shí),MySQL將以不同方式處理查詢(xún)。 電腦硬件www.boydavid.com · 如果你用LIMIT只選擇一些行,當(dāng)MySQL選擇做完整的表掃描時(shí),它將在一些情況下使用索引。
· 如果你使用LIMIT row_count與ORDER BY,MySQL一旦找到了排序結(jié)果的第一個(gè)row_count行,將結(jié)束排序而不是排序整個(gè)表。如果使用索引,將很快。如果必須進(jìn)行文件排序(filesort),必須選擇所有匹配查詢(xún)沒(méi)有LIMIT子句的行,并且在確定已經(jīng)找到第1個(gè)row_count行前,必須對(duì)它們的大部分進(jìn)行排序。在任何一種情況下,一旦找到了行,則不需要再排序結(jié)果的其它部分,并且MySQL不再進(jìn)行排序。 · 當(dāng)結(jié)合LIMIT row_count和DISTINCT時(shí),MySQL一旦找到row_count個(gè)唯一的行,它將停止。
· 在一些情況下,GROUP BY能通過(guò)順序讀取鍵(或在鍵上做排序)來(lái)解決,然后計(jì)算摘要直到關(guān)鍵字的值改變。在這種情況下,LIMIT row_count將不計(jì)算任何不必要的GROUP BY值。 計(jì)算機(jī)愛(ài)好者www.boydavid.com · 只要MySQL已經(jīng)發(fā)送了需要的行數(shù)到客戶(hù),它將放棄查詢(xún),除非你正使用SQL_CALC_FOUND_ROWS。
· LIMIT 0將總是快速返回一個(gè)空集合。這對(duì)檢查查詢(xún)的有效性是有用的。當(dāng)使用MySQL API時(shí),它也可以用來(lái)得到結(jié)果列的列類(lèi)型。(該技巧在MySQL Monitor中不工作,只顯示Empty set;應(yīng)使用SHOW COLUMNS或DESCRIBE)。
· 當(dāng)服務(wù)器使用臨時(shí)表來(lái)進(jìn)行查詢(xún)時(shí),使用LIMIT row_count子句來(lái)計(jì)算需要多少空間。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |