Temat: [PostgreSQL] Informacje o zapytaniu
Dzięki za podpowiedź.
Użyłem EXPLAIN z opcją VERBOSE. W rezultacie otrzymałem dosyć szczegółowe informacje na temat zapytania, które złożone są z dwóch części; pierwsza, zawarta między klamrami {} posiada informacje na temat kolumn zwracanych w wyniku zapytania (:resname) oraz w miarę stałą strukturę, którą da się przerobić np. na tablicę.
Druga części ("Seq Scan on ...") zawiera nazwy tabel oraz pola użyte w warunkach zapytania, lecz nie posiada już takiej prostej struktury i o ile dla prostego SELECTa wygląda dosyć czytelnie, to dla bardziej skomplikowanych zapytań trudno będzie to sparsować.
" {SEQSCAN "
" :startup_cost 0.00 "
" :total_cost 129.85 "
" :plan_rows 1 "
" :plan_width 4 "
" :targetlist ("
" {TARGETENTRY "
" :expr "
" {VAR "
" :varno 1 "
" :varattno 1 "
" :vartype 23 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 1"
" }"
" :resno 1 "
" :resname idx_zapytania "
" :ressortgroupref 0 "
" :resorigtbl 16407 "
" :resorigcol 1 "
" :resjunk false"
" }"
" )"
" :qual ("
" {OPEXPR "
" :opno 1627 "
" :opfuncid 1633 "
" :opresulttype 16 "
" :opretset false "
" :args ("
" {VAR "
" :varno 1 "
" :varattno 3 "
" :vartype 25 "
" :vartypmod -1 "
" :varlevelsup 0 "
" :varnoold 1 "
" :varoattno 3"
" }"
" {CONST "
" :consttype 25 "
" :consttypmod -1 "
" :constlen -1 "
" :constbyval false "
" :constisnull false "
" :constvalue 11 [ 44 0 0 0 73 78 83 69 82 84 37 ]"
" }"
" )"
" }"
" )"
" :lefttree <> "
" :righttree <> "
" :initPlan <> "
" :extParam (b)"
" :allParam (b)"
" :scanrelid 1"
" }"
""
"Seq Scan on zapytania z (cost=0.00..129.85 rows=1 width=4)"
" Filter: (zapytanie_sql ~~* 'INSERT%'::text)"
Czy da się wyciągnąć te informacje jakoś inaczej? Może planner udostępnia jakieś API z którego można skorzystać?
Łukasz Schabek edytował(a) ten post dnia 22.06.09 o godzinie 11:34