สำหรับตารางที่มีคอลัมน์ข้อมูลมากขึ้นฉันชอบ:
SELECT
tablename.col1,
tablename.col2,
tablename.col3,
...
FROM
(
(
SELECT
col1
FROM
(
SELECT col1, ROW_NUMBER() OVER (ORDER BY col1 ASC) AS RowNum
FROM tablename
WHERE ([CONDITION])
)
AS T1 WHERE T1.RowNum BETWEEN [OFFSET] AND [OFFSET + LIMIT]
)
AS T2 INNER JOIN tablename ON T2.col1=tablename.col1
);
-
[CONDITION] can contain any WHERE clause for searching.
[OFFSET] specifies the start,
[LIMIT] the maximum results.
มีประสิทธิภาพที่ดีกว่ามากบนตารางที่มีข้อมูลขนาดใหญ่เช่น BLOB เนื่องจากฟังก์ชัน ROW_NUMBER ต้องมองผ่านคอลัมน์เดียวเท่านั้นและจะแสดงเฉพาะแถวที่ตรงกันพร้อมกับคอลัมน์ทั้งหมด