Для таблиць із більшими та великими стовпцями даних я віддаю перевагу:
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 повинна переглядати лише один стовпець, і лише всі відповідні рядки повертаються з усіма стовпцями.