Stenogram Sejmu · 2026-07-30

Janusz Cichoń

Kadencja 10 · posiedzenie 63 · wypowiedź 5

Profil posła

Brak głosu imiennego z tego dnia, który potwierdzałby klub mówcy.

Pełna wypowiedź

10. kadencja, 63. posiedzenie, 2. dzień (30-07-2026) 14., 15. i 16. punkt porządku dziennego: 14. Sprawozdanie Komisji Finansów Publicznych w sprawie sprawozdania z wykonania budżetu państwa za okres od dnia 1 stycznia do dnia 31 grudnia 2025 r. wraz z przedstawioną przez Najwyższą Izbę Kontroli analizą wykonania budżetu państwa i założeń polityki pieniężnej w 2025 r. oraz komisyjnym projektem uchwały w przedmiocie absolutorium (druki nr 2629, 2681 i 2817). 15. Sprawozdanie z działalności Narodowego Banku Polskiego w 2025 roku wraz ze sprawozdaniem Komisji Finansów Publicznych (druki nr 2627 i 2687). 16. Sprawozdanie Komisji Finansów Publicznych o przedstawionej przez Prezesa Rady Ministrów Informacji o poręczeniach i gwarancjach udzielonych w 2025 roku przez Skarb Państwa, niektóre osoby prawne oraz Bank Gospodarstwa Krajowego (druki nr 2582 i 2718). Poseł Sprawozdawca Janusz Cichoń: Panie Marszałku! Panie i Panowie Ministrowie! Wysoka Izbo! Ustawa o Narodowym Banku Polskim nakłada na prezesa NBP obowiązek przedstawienia Sejmowi rocznego sprawozdania z działalności banku, także sprawozdania z realizacji polityki pieniężnej, założeń polityki pieniężnej, jednak nie przyznaje Sejmowi kompetencji do jego zatwierdzania, odrzucania, a nawet zaopiniowania czy akceptacji. To jest ta niezależność, o której pan prezes przed chwilą mówił. Sprawozdanie ma w gruncie rzeczy charakter informacyjny i stanowi podstawę parlamentarnej debaty. Taka wstępna debata odbywa się na posiedzeniu Komisji Finansów Publicznych. W trakcie tej debaty parokrotnie był przywoływany art. 3 ust. 1 ustawy o Narodowym Banku Polskim mówiący, że podstawowym celem działalności NBP jest utrzymanie stabilnego poziomu cen przy jednoczesnym wspieraniu polityki gospodarczej rządu, o ile nie ogranicza to podstawowego celu NBP. Wobec tego dyskusja na posiedzeniu komisji nie tylko toczyła się wokół realizacji założeń polityki pieniężnej, lecz także dotykała działań, a w zasadzie braku działań w zakresie wsparcia polityki gospodarczej rządu. Zwracaliśmy uwagę na to, że średnioroczna inflacja wyniosła 3,6%, ale pierwotna prognoza to było 5,6%. Dość duży błąd, jak widać. Radykalny zwrot tak na dobrą sprawę w polityce stóp procentowych nastąpił w maju. Pytanie, czy nie mógł nastąpić wcześniej. Nie pochwalił się pan prezes NBP, jeśli chodzi o wynik finansowy NBP za rok 2025. Ten wynik to strata w wysokości 35 740 mln zł, i to jest najwyższa strata, jaką bank kiedykolwiek odnotował, a skumulowana wartość strat z lat 2022-2025 przekroczyła 86 mld. Jakby do tego dołożyć epizody aprecjacji złotego z lat 2007 i 2017, to mamy ok. 100 mld zł. Na posiedzeniu komisji wskazaliśmy także pewne zaniechania, jeśli chodzi o działania NBP, bo Narodowy Bank Polski zrealizował cel inflacyjny, ale zarząd, a także Rada Polityki Pieniężnej nie wykorzystały szeregu możliwości rynkowych, prawnych i strukturalnych... (Poseł Zbigniew Krzysztof Kuźmiuk: To źle.) ...które mogłyby poprawić sytuację finansową banku, ograniczyć koszty polityki pieniężnej, efektywniej wesprzeć ekonomiczne cele państwa, także bezpieczeństwo państwa, realizować cel i wspierać politykę gospodarczą rządu. Wskazaliśmy kilka obszarów. Istotnym zaniechaniem operacyjnym o bezpośrednich wielomiliardowych konsekwencjach finansowych było utrzymanie pełnego oprocentowania środków rezerwy obowiązkowej odprowadzanych przez banki komercyjne. Zgodnie z decyzjami Rady Polityki Pieniężnej stopa rezerwy obowiązkowej w 2025 r. wynosiła 3,5% podstawy depozytowej. Dynamiczny wzrost oszczędności gospodarstw domowych i przedsiębiorstw sprawił, że średnia wartość rezerw zdeponowanych przez banki komercyjne na nieaktywnych rachunkach przekroczyła 80 mld zł. Środki te były oprocentowane na poziomie równym pełnej stopie referencyjnej, co przy średniorocznym wskaźniku stóp na poziomie 5,1% przełożyło się na transfer odsetkowy z banku centralnego do banków komercyjnych w kwocie ok. 4 mld zł. NBP, Rada Polityki Pieniężnej i zarząd NBP posiadały pełną autonomię do obniżenia lub całkowitego wyzerowania tego oprocentowania. Mamy precedens, jeśli chodzi o Europejski Bank Centralny, który zredukował oprocentowanie rezerw do zera, dążąc do ograniczenia strat eurosystemu i zredukowania darmowych subsydiów dla sektora komercyjnego. Zarząd NBP uzasadniał swoje zaniechania, brak działań w tym zakresie obawą przed pogorszeniem stabilności finansowej banków komercyjnych i potencjalnym wzrostem kredytów dla klientów detalicznych. To nie są przekonujące argumenty, zwłaszcza jeśli weźmiemy pod uwagę, że sektor bankowy w 2025 r. miał rekordowe zyski. Nie ma tu wobec tego podstaw ekonomicznych. Kolejną zaprzepaszczoną szansą o wymiarze strategicznym jest niewdrożenie programu aktywnego zarządzania rezerwami złota. Pan prezes się chwali rezerwami złota. Rzeczywiście NBP realizował niezwykle agresywną politykę zakupu kruszcu. W samym 2025 r. nabył 104 t złota, zwiększając stan posiadania do blisko 550 t i generując gigantyczny, niezrealizowany zysk wynikający ze wzrostu cen rynkowych kruszcu, szacunkowo od 160 do prawie 200 mld zł. Zgodnie z europejskimi zasadami rachunkowości banków centralnych ten olbrzymi zysk pozostawał uwięziony na pasywnej stronie bilansu jako różnica z wyceny rynkowej i nie mógł zostać ujęty w rachunku zysków i strat. (Poseł Krystyna Skowrońska: Rezerwy.) Tym samym nie mógł bezpośrednio zasilić budżetu państwa. To zrozumiałe, ale NBP dysponował naszym zdaniem realną możliwością rynkową uwolnienia części tych środków. Wymagało to przeprowadzenia operacji aktywnego zarządzania, polegającej na sprzedaży części fizycznego złota przechowywanego w Londynie na rynku London Goods Delivery i jego jednoczesnym odkupieniu w ramach transakcji terminowych. Taka struktura operacji rynkowej pozwoliłaby na formalne, zgodne z prawem zrealizowanie zysku księgowego przekładającego się na wynik banku, pokrycie strat i potencjalnie także zasilenie budżetu państwa, odciążyłaby też finanse publiczne i wsparła politykę gospodarczą rządu. Przecież to także jest cel NBP. Żeby ta operacja była w pełni bezpieczna, pewnie dobrze byłoby uruchomić formalne konsultacje z Europejskim Bankiem Centralnym co do zgodności takiego mechanizmu z zakazem finansowania monetarnego, tj. art. 123 Traktatu o funkcjonowaniu Unii Europejskiej. Kolejny obszar, który wskazaliśmy, to była pasywność NBP wobec dynamicznej aprecjacji złotego. Ona miała gigantyczny wpływ, ponad 36 mld straty na kursach walutowych. Nie było żadnego swapu walutowego, tak naprawdę NBP nie przeprowadził żadnej interwencji na rynku, mimo że ma do tego umocowanie i robił to parokrotnie wcześniej. Mógł przynajmniej wygładzić trajektorię kursu walutowego poprzez interwencyjny skup w momentach najsilniejszej presji. Członek zarządu NBP na posiedzeniu komisji mówił, że dla eksportu polskiego nie miało to znaczenia. Względem dolara 12,2% - taka była aprecjacja złotego. Biorąc pod uwagę to, co się działo w Stanach Zjednoczonych, i jak do tego dołożymy ograniczenia w handlu, to dla eksportu polskiego miało to jednak moim zdaniem znaczenie. W sumie taktyczne operacje wygładzające pewnie nie zmieniłyby tego fundamentalnego trendu, ale ograniczyłyby tę zmienność kursu. Było to moim zdaniem zaniechanie operacyjne w zakresie zarządzania ryzykiem bilansowym. Ostatni obszar, który chciałbym wskazać - dyskutowaliśmy na ten temat w Komisji Finansów Publicznych - to jest zignorowanie instrumentu, który jest dostępny, jeśli chodzi o narzędzie NBP, tj. kredytu dyskontowego weksli. To jest instrument, który pozwala na refinansowanie kredytów udzielanych przedsiębiorcom przez banki komercyjne. W 2025 r. zmagaliśmy się z wyhamowaniem stopy inwestycji prywatnych. W warunkach relatywnie wysokich stóp procentowych kredyt dyskontowy weksli mógł stanowić efektywny kanał transmisyjny, umożliwiający tańsze finansowanie projektów rozwojowych w sektorze mikro-, małych i średnich przedsiębiorstw, ale Narodowy Bank Polski nie podjął żadnych działań operacyjnych w celu popularyzacji i aktywacji tego instrumentu, pozostawiając go jako martwy, czysto teoretyczny zapis w założeniach polityki pieniężnej. Kończąc, w imieniu Komisji Finansów Publicznych mogę tylko wyrazić nadzieję, że Zarząd NBP w bieżącym roku lepiej niż w ostatnich 3 latach będzie wypełniał swoją rolę i realizował swoje ustawowe zadania. Nie będzie tylko stabilizował cen, ale także będzie aktywnie wspierał politykę gospodarczą rządu. Dziękuję. (Oklaski) Przebieg posiedzenia

Otwórz zachowany oryginał · Źródło urzędowe

Dowód treści wypowiedzi

Dowód kolejności na liście dnia

Kontekst w stenogramie

  1. Wcześniej · wypowiedź 3 Mariusz Haładyj 10. kadencja, 63. posiedzenie, 2. dzień (30-07-2026) 14., 15. i 16. punkt porządku dziennego: 14. Sprawozdanie Komisji Finansów Publicznych w sprawie sprawozdania z wykonania budżetu państwa za okres od dnia 1 stycznia do dnia 31 grudnia 20
  2. Wcześniej · wypowiedź 4 Artur Soboń 10. kadencja, 63. posiedzenie, 2. dzień (30-07-2026) 14., 15. i 16. punkt porządku dziennego: 14. Sprawozdanie Komisji Finansów Publicznych w sprawie sprawozdania z wykonania budżetu państwa za okres od dnia 1 stycznia do dnia 31 grudnia 20
  3. Później · wypowiedź 6 Zofia Czernow 10. kadencja, 63. posiedzenie, 2. dzień (30-07-2026) 14., 15. i 16. punkt porządku dziennego: 14. Sprawozdanie Komisji Finansów Publicznych w sprawie sprawozdania z wykonania budżetu państwa za okres od dnia 1 stycznia do dnia 31 grudnia 20
  4. Później · wypowiedź 7 Jarosław Urbaniak 10. kadencja, 63. posiedzenie, 2. dzień (30-07-2026) 14., 15. i 16. punkt porządku dziennego: 14. Sprawozdanie Komisji Finansów Publicznych w sprawie sprawozdania z wykonania budżetu państwa za okres od dnia 1 stycznia do dnia 31 grudnia 20
1. (1.94ms; exec 1.89 + fetch 0.05; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, d…
2. (1.2ms; exec 1.17 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
3. (0.83ms; exec 0.81 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2890 ORDER BY ordinal
4. (0.87ms; exec 0.84 + fetch 0.03; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcrip…
5. (0.94ms; exec 0.93 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
6. (0.73ms; exec 0.72 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
7. (1.09ms; exec 1.07 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2888 ORDER BY ordinal
8. (0.74ms; exec 0.74 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
9. (0.67ms; exec 0.66 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
10. (0.59ms; exec 0.57 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2889 ORDER BY ordinal
11. (0.79ms; exec 0.79 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
12. (1.02ms; exec 1.01 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
13. (0.77ms; exec 0.75 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2891 ORDER BY ordinal
14. (1.16ms; exec 1.15 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
15. (0.96ms; exec 0.94 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
16. (0.76ms; exec 0.73 + fetch 0.03; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2892 ORDER BY ordinal
17. (3.1ms; exec 3.06 + fetch 0.04; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_vote…
toggle
1. (1.94ms; exec 1.89 + fetch 0.05; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 12236 LIMIT 1
2. (1.2ms; exec 1.17 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 11221 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
3. (0.83ms; exec 0.81 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2890 ORDER BY ordinal
4. (0.87ms; exec 0.84 + fetch 0.03; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcript_day_statements dayStatement JOIN sejm_statements statement ON statement.object_id = dayStatement.statement_id WHERE dayStatement.day_id = 12230 AND dayStatement.day_revision_id = 11798 AND dayStatement.ordinal BETWEEN 3 AND 7 AND statement.object_id <> 12236 ORDER BY dayStatement.ordinal
5. (0.94ms; exec 0.93 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 12230 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 3) LIMIT 1
6. (0.73ms; exec 0.72 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 11213 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
7. (1.09ms; exec 1.07 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2888 ORDER BY ordinal
8. (0.74ms; exec 0.74 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 12230 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 4) LIMIT 1
9. (0.67ms; exec 0.66 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 11220 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
10. (0.59ms; exec 0.57 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2889 ORDER BY ordinal
11. (0.79ms; exec 0.79 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 12230 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 6) LIMIT 1
12. (1.02ms; exec 1.01 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 11222 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
13. (0.77ms; exec 0.75 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2891 ORDER BY ordinal
14. (1.16ms; exec 1.15 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 12230 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 7) LIMIT 1
15. (0.96ms; exec 0.94 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 11223 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
16. (0.76ms; exec 0.73 + fetch 0.03; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 2892 ORDER BY ordinal
17. (3.1ms; exec 3.06 + fetch 0.04; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 63 AND individual.mp_number = 49 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-07-30' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
Top slow:
3.1ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes indiv…
1.94ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.objec…
1.2ms SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run …
toggle
3.1ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 63 AND individual.mp_number = 49 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-07-30' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
1.94ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 12236 LIMIT 1
1.2ms SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 11221 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
N+1 candidates:
5× (4.58ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing…
5× (4.04ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (3.63ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON versi…
toggle
5× (4.58ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = ? AND run.state = ? ORDER BY CASE extraction.quality_state WHEN ? THEN ? WHEN ? THEN ? ELSE ? END, run.finished_at DESC, extraction.id DESC LIMIT ?
5× (4.04ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (3.63ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = ? AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = ? AND document.document_kind = ? AND document.source_document_key = CONCAT(?, ?) LIMIT ?
PHP: 25.3ms | App: 25ms | DB: 18.2ms (17, rows: 19) [exec: 17.8ms, fetch: 0.3ms] | View: 0.5ms (1) | Mem: 2MB (peak: 2MB) | Files: 20
toggle files
(0.51ms) /app/templates/speeches/show.php
/app/public/index.php
/app/vendor/autoload.php
/app/vendor/composer/autoload_real.php
/app/vendor/composer/platform_check.php
/app/vendor/composer/ClassLoader.php
/app/vendor/composer/autoload_static.php
/app/vendor/symfony/deprecation-contracts/function.php
/app/vendor/symfony/polyfill-php83/bootstrap.php
/app/lib/PFrame.php
/app/config/credentials/local.php
/app/src/Http/PublicResponseCache.php
/app/src/Http/AuthRoutes.php
/app/src/Http/ReviewDecisionRoutes.php
/app/src/Http/TopicDecisionRoutes.php
/app/src/Http/WatchRoutes.php
/app/src/Http/SpeechController.php
/app/src/Overview/SpeechReadModel.php
/app/src/Text/TextSearch.php
/app/templates/layout.php