ααααααα»ααα ααΊααΆαααααααα’ααααα·αα αΆαααΆα ααααα½αααΆααααα’αααΈααΆααααααΎαααααα·αααααΆαααααα·ααααα·ααΆαααΌαααααΆααα·ααααααα αααααααΆαα·ααα αααααααα αα αααα·ααα αα αααα·ααααΆααααΈαααααααΌαα αααααααΎα Facebook αααααΆαα αααααααααααααΆααΆααααααΌααα·ααααααααΆααα’ααααααα½αααα’αΆα ααα½αααΆαα α’αΆααΈαααααααααΌαααΆααα·ααααααααα ααΎααααΈααααα»ααααααΆαααααΌααΆαααααααααΎα ααααα½ααα½αααααααααΆααα αααα»ααααααααααααααα α’αααααααααααααα·ααΈααααΌααααααΎα APIs αααα’αα»ααααΆαα±αααα½αααααααΎααΆααααΆαααΆαααα αα αα·αα’αΆα αα»αα α·αααααΆαααΆαα½αααΉαααααααΆαααααα
ααααα·αααΎα’αααααΆααα
ααΆαααααα·ααΈ α¬αααααααΆααααααααααΌαααααΆααα·αααααααααααΆααααααααααΆαα½α α’ααααααα ααααΆααΆααααααααΌαααΎααααΈααααΎαααΆααααα½ααααααΆααα·αααααΆααα α§ααΆα αααααΌα
αααα
SELECT * FROM table_name LIMIT 10 OFFSET 40
αααααααααΆ?
ααα»ααααααααα·αααΎαααααΆαααααααα’αααααΆαααααΎ pagination ααααα’ααα αααα»ααα»ααααααααα·ααΆαααΆα’ααααα·αααΆαααααΎααΆααΆααααααααααΆαααααα·αααααΆααααα»αα
ααΎα’αααα
ααααααΆααααΉααααα»ααα?
ααΆαααααααα’αααα’αα·αααααααααααααΆαααααααααΆαα αα
ααΆααααααΆααααααα·αααααΆααααααΎ OFFSET
ΠΈ LIMIT
ααΎααααΈα’αα»αααααααα½α paginated α αα
αααα»α MVP (ααα·ααααααα’αΆα
ααααΎαααΆαααΆαα’αααααααΆ) αα·ααα
αααα»αααααααααααα·ααααααα
ααα½αααΌα
ααααΌαααΆαααααΎααααΆαα αα·ααΈααΆααααααααααΊα’αΆα
α’αα»ααααααΆαα ααΆ "ααααΆααααααααΎαααΆα" ααΌα
ααααααΎααααΈαα·ααΆαα
ααα»ααααααααα·αααΎα’αααααααΌαααΆααααααΎααααααααααααα’αΆα αα»αα α·αααααΆα αα·αααΆαααααα·αααααΆαααΆααααΈααααΌα α’ααααα½αααααα α·ααααα»αααΆααααΆαα»αα’αααΈααααα·αααααΆαααααΆαααΆααα½αααΌαααααΆααα·αααααααααααααΎαααα»αααααααααααααααα
αααααααααΎαααΉααα·ααΆαα’αααΈαααα αΆααΆαα½αααΉαααΆαα’αα»αααααααααααΎααΆααΌαα (α’αΆαααααααα) αααααΆαααΈααααα½ααααααΆααα·αααααΆαα αα·αααααααΎααααΈαααααα ααΆαααΌαααααα·αααααΆαααααααα αααααααα·ααααα·αααα½αααααααα
ααΎ OFFSET αα·α LIMIT ααΆααααα αΆα’αααΈ?
ααΌα
αααααΆααα·ααΆααα½α
ααα αΎα, OFFSET
ΠΈ LIMIT
αα½αααα’αα»ααααααΆαααα’αα
αααα»αααααααααααα·αα
αΆαααΆα
αααααΎααΆαααΆαα½ααα·ααααααααα
αααα αΆααΎαα‘αΎααα ααααααααΌαααααΆααα·ααααααααΎαα‘αΎααααααα ααααααΆαααααααΉαα’αααα αα αΆααααααααΆαααΈααααααα αΎαα ααααααΆαααΆααααα αα αααααααΎααΆαααΆαα½αααΌαααααΆααα·ααααααααα α’αααααααΌαααααΎαααα½α paginated α
ααΎααααΈα±αααααα αΆααααααα αΆαα±ααααΎαααααααα½αα―α ααααΌαααααΆαααααΆαααΆαααα 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 ms ααΎααααΈαααα
αα ααα»ααααααΆαααααα·ααααα·αα ααΈααΈα - 1 ms) α
α αΎαβααααα·αααΎβααΆαβαα·ααααααβα
αααΎαβααα αααβα’αααΈαβααΉαβααΆααααβα’αΆαααααβαα
α (ααΎααααΈβα±ααβααΆαβααααΏβααΎβα
ααα»α
βααα ααΌαβααΎαβαααααααα»α
α’αααΈβαααβααΎαβααΎαβααβαα·ααΆααααΆβαα½αβααβαααααβα±ααβα’αααβααΌαβααΆαβαααβααΉαβαα½αβα ααα½αβα’αααΈβααααβαααβαααα½αβααΌαααααΆαβαα·ααααααβααααΌαβααΆαβααααΎαααΆαβαααΆαβαα·αβααααΆααα
ααΌαα
αααΆαααΆαααααααΆαααααααααα 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