LIMIT 和 OFFSET #LIMIT 和 OFFSET 允許您僅檢索查詢其餘部分生成的部分行。
SELECTselect_listFROMtable_expression[ ORDER BY ... ] [ LIMIT {count| ALL } ] [ OFFSETstart]
如果給定了限制計數,則最多返回該數量的行(但如果查詢本身產生的行數少於該數量,則可能返回更少)。LIMIT ALL 與省略 LIMIT 子句相同,LIMIT 帶有 NULL 引數也與此相同。
OFFSET 表示在開始返回行之前跳過指定數量的行。OFFSET 0 與省略 OFFSET 子句相同,OFFSET 帶有 NULL 引數也與此相同。
如果同時出現 OFFSET 和 LIMIT,則在開始計算要返回的 LIMIT 行之前,會跳過 OFFSET 行。
使用 LIMIT 時,使用約束結果行以產生唯一順序的 ORDER BY 子句非常重要。否則,您將獲得查詢行的不可預測的子集。您可能正在請求第十行到第二十行,但這是在什麼順序下的第十行到第二十行?除非您指定了 ORDER BY,否則順序是未知的。
查詢最佳化器在生成查詢計劃時會考慮 LIMIT,因此根據您為 LIMIT 和 OFFSET 提供的值,您很可能會獲得不同的計劃(產生不同的行順序)。因此,使用不同的 LIMIT/OFFSET 值來選擇查詢結果的不同子集,將導致結果不一致,除非您使用 ORDER BY 來強制執行可預測的結果順序。這不是錯誤;這是 SQL 不保證以任何特定順序返回查詢結果的固有結果,除非使用 ORDER BY 來約束順序。
OFFSET 子句跳過的行仍然需要在伺服器內部進行計算;因此,較大的 OFFSET 可能會效率低下。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。