@@ -295,7 +295,7 @@ vectorized: true
295
295
spans: FULL SCAN
296
296
297
297
query T
298
- EXPLAIN (VERBOSE)
298
+ EXPLAIN ANALYZE
299
299
WITH q AS (
300
300
SELECT * FROM ltable WHERE lk > 2
301
301
)
@@ -305,86 +305,106 @@ SELECT count(*), (SELECT count(*) FROM q) FROM (
305
305
LEFT JOIN rtable ON ST_Intersects(q.geom1, rtable.geom)
306
306
) GROUP BY lk
307
307
----
308
- distribution: local
309
- vectorized: true
308
+ planning time: 10µs
309
+ execution time: 100µs
310
+ distribution: <hidden>
311
+ vectorized: <hidden>
312
+ plan type: custom
313
+ maximum memory usage: <hidden>
314
+ network usage: <hidden>
315
+ regions: <hidden>
316
+ isolation level: serializable
317
+ priority: normal
318
+ quality of service: regular
310
319
·
311
320
• root
312
- │ columns: (count, count)
313
321
│
314
322
├── • render
315
- │ │ columns: (count, count)
316
- │ │ render count: @S2
317
- │ │ render count_rows: count_rows
318
323
│ │
319
324
│ └── • group (hash)
320
- │ │ columns: (lk, count_rows)
321
- │ │ estimated row count: 333 (missing stats)
322
- │ │ aggregate 0: count_rows()
325
+ │ │ sql nodes: <hidden>
326
+ │ │ regions: <hidden>
327
+ │ │ actual row count: 0
328
+ │ │ estimated max memory allocated: 0 B
329
+ │ │ estimated max sql temp disk usage: 0 B
323
330
│ │ group by: lk
324
331
│ │
325
- │ └── • project
326
- │ │ columns: (lk)
332
+ │ └── • lookup join (left outer) (streamer)
333
+ │ │ sql nodes: <hidden>
334
+ │ │ regions: <hidden>
335
+ │ │ actual row count: 0
336
+ │ │ KV time: 0µs
337
+ │ │ KV contention time: 0µs
338
+ │ │ KV rows decoded: 0
339
+ │ │ KV bytes read: 0 B
340
+ │ │ KV gRPC calls: 0
341
+ │ │ estimated max memory allocated: 0 B
342
+ │ │ estimated max sql temp disk usage: 0 B
343
+ │ │ table: rtable@rtable_pkey
344
+ │ │ equality: (rk1, rk2) = (rk1, rk2)
345
+ │ │ equality cols are key
346
+ │ │ pred: st_intersects(geom1, geom)
327
347
│ │
328
- │ └── • project
329
- │ │ columns: (lk, geom1, geom)
348
+ │ └── • inverted join (left outer)
349
+ │ │ sql nodes: <hidden>
350
+ │ │ regions: <hidden>
351
+ │ │ actual row count: 0
352
+ │ │ KV time: 0µs
353
+ │ │ KV contention time: 0µs
354
+ │ │ KV rows decoded: 0
355
+ │ │ KV bytes read: 0 B
356
+ │ │ KV gRPC calls: 0
357
+ │ │ estimated max memory allocated: 0 B
358
+ │ │ estimated max sql temp disk usage: 0 B
359
+ │ │ table: rtable@geom_index
330
360
│ │
331
- │ └── • lookup join (left outer)
332
- │ │ columns: (lk, geom1, rk1, rk2, cont, geom)
333
- │ │ estimated row count: 3,333 (missing stats)
334
- │ │ table: rtable@rtable_pkey
335
- │ │ equality: (rk1, rk2) = (rk1, rk2)
336
- │ │ equality cols are key
337
- │ │ pred: st_intersects(geom1, geom)
338
- │ │
339
- │ └── • project
340
- │ │ columns: (lk, geom1, rk1, rk2, cont)
341
- │ │
342
- │ └── • inverted join (left outer)
343
- │ │ columns: (lk, geom1, rk1, rk2, geom_inverted_key, cont)
344
- │ │ estimated row count: 3,333 (missing stats)
345
- │ │ table: rtable@geom_index
346
- │ │ inverted expr: st_intersects(geom1, geom_inverted_key)
347
- │ │
348
- │ └── • project
349
- │ │ columns: (lk, geom1)
350
- │ │
351
- │ └── • scan buffer
352
- │ columns: (lk, geom1, geom2)
353
- │ estimated row count: 333 (missing stats)
354
- │ label: buffer 1 (q)
361
+ │ └── • scan buffer
362
+ │ sql nodes: <hidden>
363
+ │ regions: <hidden>
364
+ │ actual row count: 0
365
+ │ label: buffer 1 (q)
355
366
│
356
367
├── • subquery
357
368
│ │ id: @S1
358
369
│ │ original sql: SELECT * FROM ltable WHERE lk > 2
359
370
│ │ exec mode: discard all rows
360
371
│ │
361
372
│ └── • buffer
362
- │ │ columns: (lk, geom1, geom2)
373
+ │ │ sql nodes: <hidden>
374
+ │ │ regions: <hidden>
375
+ │ │ actual row count: 0
363
376
│ │ label: buffer 1 (q)
364
377
│ │
365
378
│ └── • scan
366
- │ columns: (lk, geom1, geom2)
367
- │ estimated row count: 333 (missing stats)
379
+ │ sql nodes: <hidden>
380
+ │ kv nodes: <hidden>
381
+ │ regions: <hidden>
382
+ │ actual row count: 0
383
+ │ KV time: 0µs
384
+ │ KV contention time: 0µs
385
+ │ KV rows decoded: 0
386
+ │ KV bytes read: 0 B
387
+ │ KV gRPC calls: 0
388
+ │ estimated max memory allocated: 0 B
389
+ │ missing stats
368
390
│ table: ltable@ltable_pkey
369
- │ spans: /3-
391
+ │ spans: [/3 - ]
370
392
│
371
393
└── • subquery
372
394
│ id: @S2
373
395
│ original sql: (SELECT count(*) FROM q)
374
396
│ exec mode: one row
375
397
│
376
398
└── • group (scalar)
377
- │ columns: (count_rows)
378
- │ estimated row count: 1 (missing stats)
379
- │ aggregate 0: count_rows()
399
+ │ sql nodes: <hidden>
400
+ │ regions: <hidden>
401
+ │ actual row count: 1
380
402
│
381
- └── • project
382
- │ columns: ()
383
- │
384
- └── • scan buffer
385
- columns: (lk, geom1, geom2)
386
- estimated row count: 333 (missing stats)
387
- label: buffer 1 (q)
403
+ └── • scan buffer
404
+ sql nodes: <hidden>
405
+ regions: <hidden>
406
+ actual row count: 0
407
+ label: buffer 1 (q)
388
408
389
409
# Anti joins are also converted to paired joins by the optimizer.
390
410
query T
0 commit comments