3
เหตุใดจึงมีแผนปฏิบัติการแตกต่างกันระหว่าง OFFSET … FETCH และแบบ ROW_NUMBER แบบเก่า
OFFSET ... FETCHรุ่นใหม่แนะนำด้วย SQL Server 2012 เสนอการเพจที่ง่ายและเร็วขึ้น ทำไมจึงมีความแตกต่างใด ๆ เมื่อพิจารณาว่าทั้งสองรูปแบบมีความหมายเหมือนกันและเป็นเรื่องธรรมดามาก? ใครจะสันนิษฐานว่าเครื่องมือเพิ่มประสิทธิภาพรับรู้ทั้งสองและเพิ่มประสิทธิภาพพวกเขา (เล็กน้อย) อย่างเต็มที่ นี่เป็นกรณีที่ง่ายมากซึ่งOFFSET ... FETCHเร็วกว่าประมาณ 2 เท่าตามประมาณการต้นทุน SELECT * INTO #objects FROM sys.objects SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY object_id) r FROM #objects ) x WHERE r >= 30 AND r < (30 + 10) …