Edgewall Software

Ticket #3676: node_change_index.txt

File node_change_index.txt, 8.6 KB (added by mgood, 20 months ago)

comparison of EXPLAIN with and without key

Line 
1EXPLAIN SELECT path,node_type,change_type,base_path,base_rev
2FROM node_change WHERE rev=1
3ORDER BY path;
4
5SQLite with key
6===============
7CREATE TABLE node_change (
8    rev text,
9    path text,
10    node_type text,
11    change_type text,
12    base_path text,
13    base_rev text,
14    UNIQUE (rev,path,change_type)
15);
16CREATE INDEX node_change_rev_idx ON node_change (rev);
17
18addr  opcode          p1          p2          p3                               
19----  --------------  ----------  ----------  ---------------------------------
200     Noop            0           0                                           
211     Goto            0           30                                           
222     Integer         0           0                                           
233     OpenRead        0           2                                           
244     SetNumColumns   0           6                                           
255     Integer         0           0                                           
266     OpenRead        2           3           keyinfo(3,BINARY,BINARY)         
277     Integer         1           0                                           
288     NotNull         -1          11                                           
299     Pop             1           0                                           
3010    Goto            0           27                                           
3111    MakeRecord      1           0           aaa                             
3212    MemStore        0           0                                           
3313    MoveGe          2           27                                           
3414    MemLoad         0           0                                           
3515    IdxGE           2           27          +                               
3616    RowKey          2           0                                           
3717    IdxIsNull       1           26                                           
3818    IdxRowid        2           0                                           
3919    MoveGe          0           0                                           
4020    Column          0           1                                           
4121    Column          0           2                                           
4222    Column          0           3                                           
4323    Column          0           4                                           
4424    Column          0           5                                           
4525    Callback        5           0                                           
4626    Next            2           14                                           
4727    Close           0           0                                           
4828    Close           2           0                                           
4929    Halt            0           0                                           
5030    Transaction     0           0                                           
5131    VerifyCookie    0           2                                           
5232    Goto            0           2                                           
5333    Noop            0           0                                           
54
55
56SQLite without key
57==================
58CREATE TABLE node_change (
59     rev text,
60     path text,
61     node_type text,
62     change_type text,
63     base_path text,
64     base_rev text
65);
66CREATE INDEX node_change_rev_idx ON node_change (rev);
67
68addr  opcode          p1          p2          p3                               
69----  --------------  ----------  ----------  ---------------------------------
700     OpenVirtual     1           3           keyinfo(1,BINARY)               
711     Goto            0           49                                           
722     Integer         0           0                                           
733     OpenRead        0           2                                           
744     SetNumColumns   0           6                                           
755     Integer         0           0                                           
766     OpenRead        2           3           keyinfo(1,BINARY)               
777     Integer         1           0                                           
788     NotNull         -1          11                                           
799     Pop             1           0                                           
8010    Goto            0           32                                           
8111    MakeRecord      1           0           a                               
8212    MemStore        0           0                                           
8313    MoveGe          2           32                                           
8414    MemLoad         0           0                                           
8515    IdxGE           2           32          +                               
8616    RowKey          2           0                                           
8717    IdxIsNull       1           31                                           
8818    IdxRowid        2           0                                           
8919    MoveGe          0           0                                           
9020    Column          0           1                                           
9121    Column          0           2                                           
9222    Column          0           3                                           
9323    Column          0           4                                           
9424    Column          0           5                                           
9525    MakeRecord      5           0                                           
9626    Column          0           1                                           
9727    Sequence        1           0                                           
9828    Pull            2           0                                           
9929    MakeRecord      3           0                                           
10030    IdxInsert       1           0                                           
10131    Next            2           14                                           
10232    Close           0           0                                           
10333    Close           2           0                                           
10434    OpenPseudo      3           0                                           
10535    SetNumColumns   3           5                                           
10636    Sort            1           47                                           
10737    Integer         1           0                                           
10838    Column          1           2                                           
10939    Insert          3           0                                           
11040    Column          3           0                                           
11141    Column          3           1                                           
11242    Column          3           2                                           
11343    Column          3           3                                           
11444    Column          3           4                                           
11545    Callback        5           0                                           
11646    Next            1           37                                           
11747    Close           3           0                                           
11848    Halt            0           0                                           
11949    Transaction     0           0                                           
12050    VerifyCookie    0           2                                           
12151    Goto            0           2                                           
12252    Noop            0           0                                           
123
124
125PostgreSQL 8.1 with key
126=======================
127CREATE TABLE node_change (
128    rev text,
129    path text,
130    node_type text,
131    change_type text,
132    base_path text,
133    base_rev text,
134    CONSTRAINT node_change_pk PRIMARY KEY (rev,path,change_type)
135);
136CREATE INDEX node_change_rev_idx ON node_change (rev);
137
138 Index Scan using node_change_pk on node_change  (cost=0.00..8.30 rows=2 width=160)
139   Index Cond: (rev = '1'::text)
140(2 rows)
141
142
143PostgreSQL 8.1 without key
144==========================
145CREATE TABLE node_change (
146    rev text,
147    path text,
148    node_type text,
149    change_type text,
150    base_path text,
151    base_rev text
152);
153CREATE INDEX node_change_rev_idx ON node_change (rev);
154
155 Sort  (cost=8.31..8.31 rows=2 width=160)
156   Sort Key: path
157   ->  Index Scan using node_change_rev_idx on node_change  (cost=0.00..8.30 rows=2 width=160)
158         Index Cond: (rev = '1'::text)
159(4 rows)