αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž›αžΌαž“αž–αžΈαžαžΆαžšαžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ PK

αž˜αžΆαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸ…αž–αŸαž› αž‘αŸ…αžαžΆαžšαžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžŸαŸ„αž…αž˜αŸ’αž”αž„ αž¬αž›αž·αž”αž·αž€αŸ’αžšαž˜αž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž€αŸ’αž›αžΌαž“αž–αŸαž‰αž›αŸαž‰αž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αŸ”

αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž›αžΌαž“αž–αžΈαžαžΆαžšαžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ PK

αž§αž‘αžΆαž αžšαžŽαŸ αžαž˜αŸ’αž›αŸƒαž“αŸƒαž˜αŸ‰αŸ‚αžαŸ’αžšαž€αžΆαž›αž”αŸ’αž”αžœαžαŸ’αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž…αž˜αŸ’αž›αž„ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž—αŸ’αž›αžΆαž˜αŸ— αž αžΎαž™αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αžΉαž„αž˜αž€αžŠαž›αŸ‹αž˜αŸ’αžαž„αž‘αŸ€αžαŸ”

αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž€αž˜αŸ’αž…αžΆαžαŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαž€αŸ’αž›αžΌαž“αžŠαŸ‚αž›αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹?

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› PK αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‡αŸ†αž“αž½αž™αž€αžΆαžš

αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαž‚αžΊαž€αžΆαžšαž–αžΆαžšαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αŸ‚αž”αž“αŸαŸ‡αž€αž»αŸ†αž±αŸ’αž™αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ†αž”αžΌαž„αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αžšαŸ†αž€αž·αž› PRIMARY KEY αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αžšαž·αž˜αžΆαžŽαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ„αŸ‡αž‘αŸαŸ”

αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαž—αž–αž‚αžΊαžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαžœαžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ–

metric   | ts                  | data
--------------------------------------------------
cpu.busy | 2019-12-20 00:00:00 | {"value" : 12.34}
cpu.busy | 2019-12-20 00:00:01 | {"value" : 10}
cpu.busy | 2019-12-20 00:00:01 | {"value" : 11.2}
cpu.busy | 2019-12-20 00:00:03 | {"value" : 15.7}

αžαžΎαž’αŸ’αž“αž€αž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‘αŸ? αž€αžΆαžšαžšαžΆαž”αŸ‹αžαž™αž€αŸ’αžšαŸ„αž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ 00:00:02 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž˜αž½αž™ ts αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαž˜αž»αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αžαŸ‚αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž–αž–αžΈαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžαž˜αŸ’αž›αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αžΊαžαž»αžŸαž‚αŸ’αž“αžΆ!)

αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ PK(αž˜αŸ‰αŸ‚αžαŸ’αžš, ts) - αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž”αŸ‰αŸ‡αž‘αž„αŸ’αž‚αž·αž…αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”

αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ PK(αž˜αŸ‰αŸ‚αžαŸ’αžš, ts, αž‘αž·αž“αŸ’αž“αž“αŸαž™) - αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αž”αžšαž·αž˜αžΆαžŽαžšαž”αžŸαŸ‹αžœαžΆαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„ αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž”αŸ’αžšαžΎαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž‡αž˜αŸ’αžšαžΎαžŸαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž”αŸ†αž•αž»αžαž‚αžΊαž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž’αž˜αŸ’αž˜αžαžΆαŸ” (αž˜αŸ‰αŸ‚αžαŸ’αžš, ts) αž“αž·αž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž–αž·αžαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž€αžΎαžαž‘αžΎαž„αŸ”

"αžŸαž„αŸ’αžšαŸ’αž‚αžΆαž˜αž€αŸ’αž›αžΌαž“αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜"

αž§αž”αŸ’αž”αžαŸ’αžαž·αž αŸαžαž»αž˜αž½αž™αž…αŸ†αž“αž½αž“αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„ αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αŸ†αž•αŸ’αž›αžΆαž‰αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž›αžΌαž“αž…αŸαž‰αž–αžΈαžαžΆαžšαžΆαž„αŸ”

αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž›αžΌαž“αž–αžΈαžαžΆαžšαžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ PK

αžαŸ„αŸ‡αž™αž€αž‚αŸ†αžšαžΌαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαžΎαž˜αŸ–

CREATE TABLE tbl(k text, v integer);

INSERT INTO tbl
VALUES
  ('a', 1)
, ('a', 3)
, ('b', 2)
, ('b', 2) -- oops!
, ('c', 3)
, ('c', 3) -- oops!!
, ('c', 3) -- oops!!
, ('d', 4)
, ('e', 5)
;

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžŠαŸƒαžšαž”αžŸαŸ‹αž™αžΎαž„αž‰αŸαžšαž”αžΈαžŠαž„ Ctrl+V αž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„ αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡...

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž…αžΌαžšαž™αžΎαž„αž™αž›αŸ‹αžαžΆαžαžΆαžšαžΆαž„αžšαž”αžŸαŸ‹αž™αžΎαž„αž’αžΆαž…αž˜αžΆαž“αž‘αŸ†αž αŸ†αž’αŸ†αžŽαžΆαžŸαŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž™αžΎαž„αžšαž€αžƒαžΎαž‰αž€αŸ’αž›αžΌαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž™αžΎαž„ "αž…αž»αž…αž˜αŸ’αžšαžΆαž˜αžŠαŸƒαžšαž”αžŸαŸ‹αž™αžΎαž„" αžαžΆαž˜αž–αŸ’αž™αž‰αŸ’αž‡αž“αŸˆαžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αŸ” αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αž½αž€αžœαžΆαž‘αžΎαž„αžœαž·αž‰.

αž αžΎαž™αž˜αžΆαž“αžœαž·αž’αžΈαž”αŸ‚αž”αž“αŸαŸ‡ - αž“αŸαŸ‡αŸ” αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™ ctid, αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžšαžΌαž”αžœαž“αŸ’αžαž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ”

αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αŸ’αžšαž˜αžΌαž› ctid αž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αž“αŸƒαž˜αžΆαžαž·αž€αžΆαž–αŸαž‰αž›αŸαž‰αž“αŸƒαž‡αž½αžšαžαžΆαžšαžΆαž„αŸ” αž‡αž˜αŸ’αžšαžΎαžŸαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ„αŸ‡αž”αž“αŸ’αž‘αžΆαžαŸ‹αž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αŸ…αž‡αžΆαž’αžαŸ’αžαž”αž‘αŸ–

SELECT
  T::text
, array_agg(ctid) ctids
FROM
  tbl T
GROUP BY
  1;

t     | ctids
---------------------------------
(e,5) | {"(0,9)"}
(d,4) | {"(0,8)"}
(c,3) | {"(0,5)","(0,6)","(0,7)"}
(b,2) | {"(0,3)","(0,4)"}
(a,3) | {"(0,2)"}
(a,1) | {"(0,1)"}

αžαžΎβ€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αžŠαŸαž‰β€‹αž”αžΆαž“β€‹αž‘αŸ?αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ” αžšαž αžΌαžαžŠαž›αŸ‹αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαžœαžΆαž›αž“αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžšαžΆαž„αž“αŸαŸ‡αŸ” αž”αŸ’αžšαž—αŸαž‘αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŸαž˜αž—αžΆαž–:

CREATE TABLE tbl(k text, v integer, x point);
SELECT
  array_agg(ctid) ctids
FROM
  tbl T
GROUP BY
  T;
-- ERROR:  could not identify an equality operator for type tbl

αž˜αŸ‚αž“αž αžΎαž™ αž™αžΎαž„αžƒαžΎαž‰αž—αŸ’αž›αžΆαž˜αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž’αžΆαžαž»αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžšαŸ αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αŸ’αž›αžΌαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžαŸ„αŸ‡β€‹αž‘αž»αž€β€‹αž²αŸ’αž™β€‹αž–αž½αž€β€‹αž‚αŸαŸ–

SELECT
  unnest(ctids[2:])
FROM
  (
    SELECT
      array_agg(ctid) ctids
    FROM
      tbl T
    GROUP BY
      T::text
  ) T;

unnest
------
(0,6)
(0,7)
(0,4)

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αžΌαž›αž…αž·αžαŸ’αžαžŸαžšαžŸαŸαžšαžαŸ’αž›αžΈαž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αžŸαžšαžŸαŸαžšαžœαžΆαžŠαžΌαž…αž“αŸαŸ‡αŸ–

SELECT
  unnest((array_agg(ctid))[2:])
FROM
  tbl T
GROUP BY
  T::text;

αžŠαŸ„αž™αžŸαžΆαžšαžαž˜αŸ’αž›αŸƒαž“αŸƒαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαŸ‚αž›αžŠαžΆαž€αŸ‹αž‡αžΆαžŸαŸŠαŸαžšαžΈαžαŸ’αž›αž½αž“αžœαžΆαž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž…αŸ†αž–αŸ„αŸ‡αž™αžΎαž„ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αŸ„αŸ‡αžœαžΆαž…αŸαž‰αž–αžΈαž‡αž½αžšαžˆαžšαžŠαŸ‚αž›αž”αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αž“αŸƒαžŸαŸ†αžŽαž½αžšαžšαž„αŸ”

αžœαžΆαž“αŸ…αžŸαž›αŸ‹αžαŸ‚αž”αž“αŸ’αžαž·αž…αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎ - αž’αŸ’αžœαžΎαž±αŸ’αž™ DELETE αž”αŸ’αžšαžΎαžˆαž»αžαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž‘αž‘αž½αž›αŸ–

DELETE FROM
  tbl
WHERE
  ctid = ANY(ARRAY(
    SELECT
      unnest(ctids[2:])
    FROM
      (
        SELECT
          array_agg(ctid) ctids
        FROM
          tbl T
        GROUP BY
          T::text
      ) T
  )::tid[]);

αžαŸ„αŸ‡αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαŸ’αž›αž½αž“αž™αžΎαž„αŸ–

αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž›αžΌαž“αž–αžΈαžαžΆαžšαžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ PK
[αžŸαžΌαž˜αž˜αžΎαž›αž–αž“αŸ’αž™αž›αŸ‹.tensor.ru]

αž”αžΆαž‘ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ– αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆ 3 αžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αž€αŸαž“ Seq αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸƒαžαžΆαžšαžΆαž„αž‘αžΆαŸ†αž„αž˜αžΌαž› αž αžΎαž™αžαŸ’αž“αžΆαŸ†αž„αž›αž»αž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžαŸ‚αž˜αž½αž™αž‡αžΆαž˜αž½αž™ Tid Scan:

->  Tid Scan on tbl (actual time=0.050..0.051 rows=3 loops=1)
      TID Cond: (ctid = ANY ($0))

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŸαž˜αŸ’αž’αžΆαžαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž‡αžΆαž…αŸ’αžšαžΎαž“ αž€αž»αŸ†αž—αŸ’αž›αŸαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš VACUUM ANALYZE.

αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžšαžΆαž„αž’αŸ†αž‡αžΆαž„ αž“αž·αž„αž…αŸ†αž“αž½αž“αžŸαŸ’αž‘αž½αž“αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αŸ–

TRUNCATE TABLE tbl;

INSERT INTO tbl
SELECT
  chr(ascii('a'::text) + (random() * 26)::integer) k -- a..z
, (random() * 100)::integer v -- 0..99
FROM
  generate_series(1, 10000) i;

αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž›αžΌαž“αž–αžΈαžαžΆαžšαžΆαž„αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ PK
[αžŸαžΌαž˜αž˜αžΎαž›αž–αž“αŸ’αž™αž›αŸ‹.tensor.ru]

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšβ€‹αž“αŸαŸ‡β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αžŠαŸ„αž™β€‹αž‡αŸ„αž‚αž‡αŸαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αžαŸ’αžšαžΌαžœαžαŸ‚β€‹αž”αŸ’αžšαžΎβ€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαž™αŸαžαŸ’αž“αž”αŸ’αžšαž™αŸ‚αž„αŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžšαžΆαž›αŸ‹αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž” αž˜αžΆαž“αž‘αŸ†αž–αŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž”αžΆαž“αž’αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Tid Scan αž αžΎαž™αž˜αž½αž™αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„ Delete αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹