ืืืคื ืืืืื ืฉืืื ืื ืืืืช ืฆืจืื ืืืืื ืืืืคืืืืืืฆืื ืฉื ืืืฆืืขื ืืกื ืื ืชืื ืื. ืืืื ืื ืขืืื ืืืืช. ืื ืืื ืืื ืืืืืื ืืืฉ ืจืืฆื ืืืฆืืจ ืืช ืืคืืืกืืืง ืืื, ืชืื ื ืืกืืื ืืืกืืฃ ืืช ืื ืื ืชืื ืื ืฉืื ืืืืืื ืืฉืื ืขืืืื ืืช ืืื. ืขืกืงืื ืืงืืงืื ืื ืชืื ืื ืืืื ืืื ืืืืฉืืจ ืืื ืืืชืจ ืืืืืื ืฉืขืืืจืื ืืื ืืืจืืืื ืืกืฃ. ืืชื ืืื ืืืื, ืืชืื ืชืื ืฆืจืืืื ืืืฆืืจ ืืืฉืงื API ืืืืคืฉืจืื ืืื ืืขืืื ืืืืืจืืช ืืืืืื ืืช ืขื ืืืืืืช ืืืืจืืช ืฉื ืืืืข.
ืื ืชืื ื ืช ืืคืืืงืฆืืืช ืขืืจืคืืืช ืื ืืกื ื ืชืื ืื ืืืืจื ืืื, ืื ืจืื ืฉืืชืืช ืงืื ืืื ืืืคืขืื ืฉืืืืชืืช ืืขืืืืืช. ืืืืืื, ืื:
SELECT * FROM table_name LIMIT 10 OFFSET 40
ืืื ืื?
ืืื ืื ืื ืขืฉืืช ืืช ืืขืืืื ืฉืื, ืื ื ืืฆืืขืจ ืืืืจ ืฉืื ืขืฉืืช ืืืช ืืฆืืจื ืืืขืืื ืืืืชืจ.
ืืชื ืจืืฆื ืืืชื ืื ืื?
ืชื ืฉื ืืคืืืช ืืคืชื ืืืืจื ืืื ืฉืืขืืื ืื ืืฉืชืืฉ OFFSET
ะธ LIMIT
ืืื ืืืฆืข ืฉืืืืชืืช ืืขืืืืืช. ื-MVP (Minimum Viable Product) ืืืคืจืืืงืืื ืฉืืื ื ืขืฉื ืฉืืืืฉ ืืืืืืืช ืงืื ืืช ืฉื ื ืชืื ืื, ืืืฉื ืื ืืฉืืื ืืืื. ืื "ืคืฉืื ืขืืื", ืืืืืื.
ืื ืื ืืชื ืฆืจืืืื ืืืฆืืจ ืืขืจืืืช ืืืื ืืช ืืืขืืืืช ืืืคืก, ืืืื ืืืืื ืืจืืฉ ืืืขืืืืช ืืฉืืืืชื ืืืืืจื ืืืืืข ืืืฉืืฉืื ืืืขืจืืืช ืืืื.
ืืืื ื ืืืจ ืขื ืืืขืืืช ืืืืืขืืช ื ืคืืฆืืช (ืืื) ืฉื ืื ืืขื ืฉืืืืชืืช ืืขืืืืื, ืืืืฆื ืืืฉืื ืืืฆืืขืื ืืืืืื ืืขืช ืืืฆืืข ืฉืืืืชืืช ืืืื.
ืื ืจืข ื-OFFSET ื-LIMIT?
ืืืืืจ, OFFSET
ะธ LIMIT
ืื ืืชืคืงืืื ืืืื ืืคืจืืืงืืื ืฉืืื ื ืฆืจืืืื ืืขืืื ืขื ืืืืืืช ืืืืืืช ืฉื ื ืชืื ืื.
ืืืขืื ืืชืขืืจืจืช ืืืฉืจ ืืกื ืื ืชืื ืื ืืื ืืืืื ืืื ืฉืืื ืืืจ ืื ื ืื ืก ืืืืืจืื ืฉื ืืฉืจืช. ืขื ืืืช, ืืขืช ืขืืืื ืขื ืืกื ื ืชืื ืื ืื, ืขืืื ืืืฉืชืืฉ ืืฉืืืืชืืช ืืขืืืืืช.
ืืื ืฉืืขืื ืื ืชืชืืื, ืืืื ืืืืืช ืืฆื ืฉืื ื-DBMS ืืคื ื ืืคืขืืื ืื ืืขืืื ืฉื ืกืจืืงืช ืืืื ืืืื ืืื ืฉืืืืชื ืืขืืืืช (ืืขืื ืฉืคืขืืืืช ืืื ืกื ืืืืืงื ืขืฉืืืืช ืืืชืจืืฉ, ืืืื ื ื ืืงืืงืื ืื ืชืื ืื ืืืืฉื ืื!).
ืืื "ืกืจืืงืช ืืืื ืืืื" (ืื "ืกืจืืงืช ืืืื ืจืฆืืคื", ืกืจืืงื ืจืฆืืคื)? ืืืื ืคืขืืื ืฉืืืืืื ื-DBMS ืงืืจื ืืจืฆืฃ ืื ืฉืืจื ืืืืื, ืืืืืจ ืืช ืื ืชืื ืื ืืืืืืื ืื, ืืืืืง ืืช ืชืืืืืชื ืืชื ืื ื ืชืื. ืกืื ืื ืฉื ืกืจืืงืช ืืืื ืืืืข ืืืืื ืืืืชืจ. ืืขืืืื ืืื ืฉืืืฉืจ ืืื ืืืืฆืข, ืืืืฆืขืืช ืคืขืืืืช ืงืื/ืคืื ืจืืืช ืืืืืืืช ืืช ืชืช-ืืขืจืืช ืืืืกืง ืฉื ืืฉืจืช. ืืืฆื ืืืืืจ ืืืื ืืฉืืื ืืงืฉืืจื ืืขืืืื ืขื ื ืชืื ืื ืืืืืืกื ืื ืืืืกืงืื, ืืืขืืืื ืฉืืขืืจืช ื ืชืื ืื ืืืืกืง ืืืืืจืื ืืื ืคืขืืื ืขืชืืจืช ืืฉืืืื.
ืืืืืื, ืืฉ ืื ืจืฉืืืืช ืฉื 100000000 ืืฉืชืืฉืื ืืืชื ืืคืขืื ืฉืืืืชื ืขื ืืืื ื OFFSET 50000000
. ืื ืืืืจ ืฉื-DBMS ืืฆืืจื ืืืขืื ืืช ืื ืืจืฉืืืืช ืืืื (ืืื ืื ื ืืคืืื ืื ืฆืจืืืื ืืืชื!), ืืฉืื ืืืชื ืืืืืจืื, ืืืืจื ืื ืืงืืช, ืืืฉื, 20 ืชืืฆืืืช ืฉืืืืื ื- LIMIT
.
ื ื ืื ืฉืื ืขืฉืื ืืืืจืืืช ืื: "ืืืจ ืฉืืจืืช ื-50000 ืขื 50020 ื-100000". ืืืืืจ, ืืืขืจืืช ืชืฆืืจื ืงืืื ืื ืืืขืื 50000 ืฉืืจืืช ืืื ืืืฉืืื ืืช ืืฉืืืืชื. ืืชื ืจืืื ืืื ืขืืืื ืืืืชืจืช ืืื ืชืฆืืจื ืืขืฉืืช?
ืื ืืชื ืื ืืืืื ืื, ืชืกืชืื ืขื ืืืืืื ืฉืืฆืจืชื ืืืืฆืขืืช ืืชืืื ืืช
ืืืืื ื-db-fiddle.com
ืฉื, ืืฉืืื, ืืฉืื Schema SQL
, ืืฉ ืงืื ืฉืืื ืืก 100000 ืฉืืจืืช ืืืกื ืื ืชืื ืื, ืืืืืื, ืืฉืื Query SQL
, ืืืฆืืืช ืฉืชื ืฉืืืืชืืช. ืืจืืฉืื, ืืืืื, ื ืจืื ืื:
SELECT *
FROM `docs`
LIMIT 10 OFFSET 85000;
ืืืฉื ื, ืฉืืื ืคืชืจืื ืืขืื ืืืืชื ืืขืื, ืืื ืืื:
SELECT *
FROM `docs`
WHERE id > 85000
LIMIT 10;
ืขื ืื ืช ืืืื ืืช ืืืงืฉืืช ืืืื, ืคืฉืื ืืืฅ ืขื ืืืคืชืืจ Run
ืืชืืืืช ืืืฃ. ืืืืจ ืฉืขืฉืื ื ืืืช, ืื ื ืืฉืืืื ืืืืข ืขื ืืื ืืืฆืืข ืืฉืืืืชื. ืืกืชืืจ ืฉืืืฆืืข ืฉืืืืชื ืื ืืคืงืืืืืช ืืืงื ืืคืืืช ืคื 30 ืืืชืจ ืืืืฆืืข ืืฉืืืืชื ืืฉื ืืื (ืืื ืื ืืฉืชื ื ืืืคืขืื ืืืจืฆื; ืืืืืื, ืืืขืจืืช ืขืฉืืื ืืืืื ืฉืืฉืืืืชื ืืจืืฉืื ื ืืงืื 37 ืืืคืืืช ืืฉื ืืื ืืื ืืืฉืืื, ืื ืืืฆืืข ืืฉืืืืชื ืฉื ืืื - 1 ืืืคืืืช ืืฉื ืืื).
ืืื ืืฉ ืืืชืจ ื ืชืื ืื, ืื ืืื ืืืจืื ืืคืืื ืืืชืจ ืืจืืข (ืืื ืืืฉืชืื ืข ืืื, ืชืกืชืื ืขื ืฉืื
ืื ืฉืืืืจื ื ืื ืขืชื ืืืืจ ืืชืช ืื ืงืฆืช ืชืืื ืืช ืืืื ืืืืคื ืฉืื ืฉืืืืชืืช ืืกื ื ืชืื ืื ืืขืืืืืช ืืคืืขื.
ืฉืืื ืื ืฉืืื ืฉืืขืจื ืืืื ืืืชืจ OFFSET
- ืืื ืฉืืืงืฉื ืืืงื ืืื ืจื ืืืชืจ ืืืฉืืื.
ืืื ืขืื ืืืฉืชืืฉ ืืืงืื ืืฉืืืื ืฉื OFFSET ื-LIMIT?
ืืืงืื ืฉืืืื OFFSET
ะธ LIMIT
ืืืื ืืืฉืชืืฉ ืืืื ื ืฉื ืื ื ืืคื ืืกืืื ืืืื:
SELECT * FROM table_name WHERE id > 10 LIMIT 20
ืืื ืืืฆืืข ืฉืืืืชื ืขื ืขืืืื ืืืืกืก ืกืื.
ืืืงืื ืืืืกื ืืช ืื ืืืืื ืืืืคื ืืงืืื OFFSET
ะธ LIMIT
ืืืฉืืจ ืืืชื ืขื ืื ืืงืฉื, ืขืืื ืืืืกื ืืช ืืืคืชื ืืจืืฉื ืืืืจืื ืฉืืชืงืื (ืืืจื ืืื ืืื ID
) ื LIMIT
, ืืชืืฆืื ืืื, ืืชืงืืื ืฉืืืืชืืช ืืืืืช ืืืืืจ ืืขืื.
ืืื? ืื ืงืืื ืืื ืฉืขื ืืื ืฆืืื ืืคืืจืฉ ืฉื ืืืืื ืฉื ืืฉืืจื ืืืืจืื ื ืฉื ืงืจืื, ืืชื ืืืืจ ื-DBMS ืฉืื ืืืื ืืื ืฆืจืื ืืืชืืื ืืืคืฉ ืืช ืื ืชืื ืื ืืืจืืฉืื. ืืชืจ ืขื ืื, ืืืืคืืฉ, ืืืืืช ืืฉืืืืฉ ืืืคืชื, ืืชืืฆืข ืืืขืืืืช; ืืืขืจืืช ืื ืชืฆืืจื ืืืืืช ืืืกืืช ืขื ืืื ืงืืืื ืืืืฅ ืืืืื ืฉืฆืืื.
ืืืื ื ืกืชืื ืขื ืืฉืืืืช ืืืืฆืืขืื ืืืื ืฉื ืฉืืืืชืืช ืฉืื ืืช. ืื ื ืฉืืืืชื ืื ืืขืืื.
ืืงืฉื ืืืืืช
ืืื ื ืืจืกื ืืืคืืืืืืช ืฉื ืืืงืฉื ืืื.
ืืงืฉื ืืืืจื
ืฉืชื ืืฉืืืืชืืช ืืืืืจืืช ืืืืืง ืืช ืืืชื ืืืืช ื ืชืื ืื. ืืื ืืจืืฉืื ืืืงื 12,80 ืฉื ืืืช ืืืฉืืื, ืืืฉื ื ืืืงื 0,01 ืฉื ืืืช. ืืื ืืชื ืืจืืืฉ ืืช ืืืืื?
ืืขืืืช ืืคืฉืจืืืช
ืืื ืฉืฉืืืช ืืฉืืืืชื ืืืืฆืขืช ืชืขืืื ืืืขืืืืช, ืืืืื ืืืืืช ืืืืื ืขืืืื (ืื ืขืืืืืช) ืืืืืืืช ืืื ืืงืกืื ืืืืืืืื ืขืืงืืื, ืืืื ืืืื ืืกืคืจ ืฉืื. ืืืงืจืื ืืกืืืืื, ืื ืขืฉืื ืืงืืืข ืืช ืืฆืืืช ืืฉืืืืฉ ืืฉืืืืชืืช ืืืื ืืื ืืืืืืจ ืืช ืืืืจืืช ืืขืืืื ืขื ืืกื ืื ืชืื ืื.
ืืืืข ืืืืจืื, ืืขืช ืื ืืืช ืฉืืืืชืืช, ืขืืื ืืงืืช ืืืฉืืื ืืช ืืืจืืืืงืืืจื ืืกืคืฆืืคืืช ืฉื ืืืืืืืช ืืืืืืจ ืืช ืืื ืื ืื ืื ืฉืืขืืื ืืฆืืจื ืืืืื ืืืืชืจ ืขื ืืืืืืืช ืืงืืืืืช. ืืืืืื, ืื ืืชื ืฆืจืื ืืขืืื ืืฉืืืืชืืช ืขื ืืืืืืช ืืืืืืช ืฉื ื ืชืื ืื ืงืฉืืจืื, ืืชื ืขืฉืื ืืืฆืื ืืช ืื ืืขื ืืื
ืื ืื ื ื ืชืงืืื ืืืขืื ืฉื ืืืืฆืช ืืคืชื ืจืืฉื, ืืืฉื, ืื ืืฉ ืื ื ืืืื ืขื ืืขืจืืช ืืืกืื ืฉื ืจืืื ืืจืืื, ืื ืืืืฉื ืืืกืืจืชืืช ืฉื ืฉืืืืฉ OFFSET
ะธ LIMIT
, ืืืืื ืฉืืชืืื ืื ื. ืืื ืืฉืืืืฉ ืื ืขืืื ืืืจืื ืืฉืืืืชืืช ืืืืืืช. ืืืงืจืื ืืืื, ืืืืชื ืืืืืฅ ืืืฉืชืืฉ ืืืคืชื ืจืืฉื ืืขื ืชืืกืคืช ืืืืืืืืช, ืื ืื ืืื ื ืืืฅ ืจืง ืืื ืืืคื ืืฉืืืืชืืช ืืขืืืืืช.
ืื ืืชื ืืขืื ืืื ืื ืืฉื ืื -
ืชืืฆืืืช ืฉื
ืืืกืงื ื ืืขืืงืจืืช ืฉืื ื ืืืืืื ืืืกืืง ืืื ืฉืื ืืฉื ื ืขื ืืืื ืืืื ืฉื ืืกืื ื ืชืื ืื ืื ืื ื ืืืืจืื, ืชืืื ืืฉ ืฆืืจื ืื ืชื ืืช ืืืืจืืช ืืืฆืืข ืืฉืืืืชื. ืืืื ืืฉ ืืฉืืืืช ืขืฆืืื ืืืืจืืืืช ืืคืชืจืื ืืช, ืืื ืืื ืืชืืื ื ื ืืื ืืืจ ืืชืืืืช ืืขืืืื ืขื ืืขืจืืช ืืกืืืืช, ืื, ืืขืชืื, ืืืื ืืืกืื ืืืืคืชื ืืขืืืช ืจืืืช.
ืืื ืื ืชืืื ืืืืฆืขืื ืืืคืืืืืืฆืื ืฉื ืฉืืืืชืืช ืืกื ื ืชืื ืื?
ืืงืืจ: www.habr.com