Stenogram Sejmu · 2026-07-29

Krzysztof Bolesta

Kadencja 10 · posiedzenie 63 · wypowiedź 47

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

Pełna wypowiedź

10. kadencja, 63. posiedzenie, 1. dzień (29-07-2026) 3. punkt porządku dziennego: Sprawozdanie Komisji Ochrony Środowiska, Zasobów Naturalnych i Leśnictwa o rządowym projekcie ustawy o zmianie ustawy - Prawo ochrony środowiska (druki nr 2778 i 2818). Sekretarz Stanu w Ministerstwie Klimatu i Środowiska Krzysztof Bolesta: Dzień dobry państwu. Pani Marszałek! Wysoka Izbo! Szanowni Państwo! Postaram się odnieść do tych pytań, które sobie ponotowałem, natomiast na początku chciałbym wspomnieć o trzech rzeczach. Po pierwsze, ten projekt ustawy jest rozwiązaniem problemu skargi Komisji Europejskiej do Trybunału Sprawiedliwości na to, że nie realizujemy naszych obowiązków względem konwencji z Aarhus. Przy okazji od razu do pana posła Sałka... To jest zarzut nie tylko Komisji Europejskiej, ale też sekretariatu konwencji, który wysłał do nas prośbę o plan działań, bo według nich nie realizujemy zapisów konwencji w taki sposób, w jaki powinniśmy. Jest to więc zajęcie się tematem nie tylko skargi ze strony Komisji Europejskiej, ale też samej konwencji z Aarhus. Z tych dwóch źródeł wiemy, że robimy coś nie tak, i stąd jest ten projekt ustawy. Druga rzecz to jest to, że ten projekt daje łatwiejszy dostęp do wymiaru sprawiedliwości. To nie jest tak, że dzisiaj tego dostępu nie ma. W szeregu pytań się przewijało, że dajemy jakąś szybką ścieżkę dostępu dla niektórych, uprzywilejowanych grup. Nie. Po prostu ustalamy pewną procedurę, bardziej ją gruntujemy i dajemy sądom większą pewność funkcjonowania w przypadku tych trzech grup, o których mówiła pani sprawozdawczyni. To jest doprecyzowanie, a nie rewolucja. Warto tu też nadmienić, że robimy to po to, żeby poprawić cały system ochrony powietrza. Państwo, szczególnie z tej strony, mówicie, że środowisko - tak, ale nie kosztem przedsiębiorców czy wzrostu gospodarczego. To, że powietrze w Polsce jest kiepskiej jakości, odbija się też na systemie zdrowia, na kosztach tego systemu zdrowia. Jak wspomniała jedna z posłanek, to jest ponad 40 tys. przedwczesnych zgonów, to jest astma, to są choroby serca. Proszę państwa, to wszystko to jest koszt. Oprócz tego, że są to tragedie ludzkie, to jest też koszt. Całe poprawianie systemu ochrony powietrza jest więc też po to, żeby poprawić stan, dobrostan Polek i Polaków. To nie jest jakaś ideologia. Po trzecie, ten projekt pomaga samorządom. W jaki sposób? W dzisiejszym reżimie prawnym samorząd powinien - bo na koniec roku kończą się plany ochrony powietrza, które dzisiaj obowiązują - przygotować teraz nowy plan, który obowiązywałby przez 4-6 lat. Już wiemy, że mamy obowiązek wdrożenia nowej dyrektywy, o której pan poseł Sałek wspomniał, na temat czystszego powietrza dla Europy. Ten nowy akt prawny trochę zmienia tę sytuację i będzie obligował samorządy do przygotowania planów na 4 lata. Ale mamy ten 2-letni okres przejściowy, więc chcemy dać samorządom możliwość przygotowania takiej łatki na 2 lata. Ona będzie zapewniać ciągłość systemu ochrony powietrza, ale nakładać na samorządy minimum obowiązków. Dlatego tam nie ma - i to z kilku pytań wynikało - wymogu pełnych analiz, dlatego nie ma wymogu przedstawienia modelowania, bo to jest możliwość przygotowania takiej krótkiej aktualizacji, która będzie de facto przedłużać ten reżim, który mamy dzisiaj. Dopiero po tych 2 latach na podstawie przepisów już nowej, wdrożonej dyrektywy samorządy będą przygotowywać 4-letnie plany ochrony powietrza, które - właśnie nad tym pracujemy - będą przygotowane już na podstawie zharmonizowanej metodologii. Będą oczywiście musiały pokazać, z czego wynika modelowanie tych programów itd. Jest to więc pomoc dla samorządów, a nie utrudnienie. Chciałbym, żeby to wybrzmiało, bo mam wrażenie, że jest tutaj jakieś niezrozumienie, myślenie, że to jest jakiś dodatkowy obowiązek. Wręcz przeciwnie, to jest ułatwienie wywiązania się z obowiązku przygotowania programów. Postaram się, może trochę zbiorczo, bo te pytania często się pokrywały... Jeżeli chodzi o konwencję z Aarhus, to już odpowiedziałem. To jest nie tylko skarga Komisji, ale też wnioski sekretariatu konwencji. Pani poseł Gembicka pytała, dlaczego dajemy organizacjom jakieś prawa. To też już mówiłem. Jeszcze zbiorczo powtórzę: to nie są nowe przywileje. Dzisiaj każda organizacja, każdy może pójść do sądu, tylko że dzisiaj sądy nie wiedzą, co z tym robić. Często umarzają te postępowania. My tym projektem dajemy większą pewność, że te procedury będą się toczyć. Tak czy inaczej, wszyscy mają dzisiaj dostęp do wymiaru sprawiedliwości. My tylko lepiej doregulowujemy te kwestie. Pani posłanka Paluch zadała wiele, wiele pytań, które sobie zanotowałem, że to są nowe zakazy, że to są jakieś nowe wymogi, które wprowadzamy. Ten projekt ustawy nie wprowadza żadnych nowych obowiązków, żadnych nowych zakazów. Chciałbym tutaj powiedzieć, bo też chciałbym, żeby to wybrzmiało: mam wrażenie, że na tej sali często były mieszane uchwały antysmogowe z programami ochrony powietrza. To w uchwałach antysmogowych, których ten projekt nie dotyczy, są określone wymogi dotyczące źródeł ciepła. W programach ochrony powietrza tego nie ma. Tak że tym projektem nie są wprowadzane żadne dodatkowe zakazy, żadne nowe zobowiązania nie tylko dla samorządów, lecz także dla producentów, którzy byli tutaj wielokrotnie wspomniani. Pani poseł Czechak pytała, czy to spowoduje paraliż wymiaru sprawiedliwości. Nie spowoduje. Już wyjaśniałem, że tak czy inaczej dzisiaj te wszystkie podmioty i tak mogą składać wnioski do sądu, dlatego trudno było oszacować, czy to spowoduje jakiś radykalny wzrost liczby postępowań. Po drugie, warto pamiętać o tym, że po ogłoszeniu programu czy jego aktualizacji jest 6-miesięczne okienko na zgłoszenie czy zaskarżenie tej decyzji, więc to naszym zdaniem dalece ogranicza liczbę postępowań, które będą się pojawiać. Pani poseł Kulpa zadała podobne pytanie, więc to już wyjaśniłem. Pan poseł Habura. Tak, pracujemy i pracowaliśmy do tej pory z samorządowcami. Na roboczo ustaliliśmy, jaki jest minimalny zakres tych aktualizacji. Jesteśmy cały czas do dyspozycji samorządów, żeby pomagać, żeby naprowadzać na to, jak powinny być te aktualizacje przygotowane. Tak że tutaj jesteśmy w bieżącym kontakcie i nie mam absolutnie żadnych wątpliwości, że będziemy przeprowadzać samorządowców przez te aktualizacje. Zawsze jesteśmy gotowi, jak ktoś ma jeszcze jakieś wątpliwości, żeby pomóc. Odpowiadając na pytanie pani poseł Pępek, chcę powiedzieć, że już trochę wyjaśniłem, że aktualizacja na 2 lata to jest ten okres przejściowy i to jest tylko taki mostek w stosunku do tych 4-letnich planów ochrony powietrza, które będą już opracowywane na podstawie przepisów nowej dyrektywy. Jest to więc tylko taka przejściówka, która ma zapewnić właśnie kontynuację systemu ochrony powietrza w Polsce. Pani sprawozdawca zapytała o wyrok TSUE, jaka jest alternatywa, czyli co się stanie, jeżeli nie wdrożymy, jeżeli nie przyjmiemy tego projektu. Oczywiście narażamy się na kary, na kary finansowe. Wszyscy już zdajemy sobie sprawę z tego, jak to działa. Polska płaci codzienny ryczałt w postaci pieniędzy odliczanych od funduszy strukturalnych, które dostajemy, czyli coś, co ma trafić np. na polskie drogi, będzie pomniejszane o karę, o ryczałt związany z naruszeniem tego, jeżeli oczywiście Trybunał zasądzi taką karę. W przypadku niepodjęcia tego wysiłku przyjęcia projektu jest to praktycznie przesądzone. A więc pozostaje tylko kwestia wysokości dziennego ryczałtu, ale to jest kilkanaście albo kilkadziesiąt tysięcy euro dziennie, co do których Polska będzie musiała pogodzić się z tym, że je tracimy. Tutaj nie ma też możliwości niezgodzenia się na przyjęcie tej kary, bo one są automatycznie odejmowane od wypłat, które Polska dostaje w ramach funduszy europejskich. Pani poseł Lisowska. Już wytłumaczyłem, że na roboczo byliśmy w kontakcie z samorządami i cały czas służymy im pomocą. Pan poseł Dorywalski pytał o przegląd ekoprojektu. To cały czas toczy się w Brukseli, w tym temacie aktywne jest tam Ministerstwo Rozwoju i Technologii. Jeżeli pan poseł pozwoli, to możemy pisemnie poinformować, na jakim konkretnie etapie jest ten przegląd, ale on jest w trakcie opracowywania. To są akty delegowane, więc nie mam konkretnej wiedzy, gdzie konkretnie jest ten przegląd, ale on się nie zakończył, więc cały czas, że się tak wyrażę, piłka jest w grze. Pan poseł Sałek pytał o problem konwencji z Aarhus. Już to wyjaśniłem we wstępie. Pani poseł Baluch. Już mówiłem, że nie ma żadnych nowych ograniczeń. Było też kilka pytań na ten temat. Szanowni Państwo! Te przepisy dają możliwość dostępu do wymiaru sprawiedliwości wszystkim organizacjom, które państwo w swoich pytaniach wymienili, czyli cechom, czyli stowarzyszeniom branżowym. To są wszystkie te instytucje, które są osobami prawnymi. One są wymieniane jako osoby prawne, bo gdyby wymieniać je wszystkie z nazwy, to ta ustawa nie miałaby kilku stron, tylko miałaby 100 stron. Po prostu wszyscy, którzy mają osobowość prawną, są uwzględnieni w tym projekcie, dlatego nie ma sensu wymieniać każdego z nazwy. Zapewniam, że dajemy wszystkim tym organizacjom, które tutaj były wymienione, takie samo prawo jak osobom fizycznym. Zaznaczę też, że wymóg 24 miesięcy, o które się martwi pan poseł Sałek... Inni posłowie i posłanki martwią się w drugą stronę: dlaczego to jest tak słabo ograniczone, a pan poseł chciałby, żeby nie było ograniczone. Chodzi o to, żeby złapać taki okres, który nam pozwoli zdefiniować te podmioty jako te, które mają interes w tym, żeby wyrażać swoje zatroskanie kwestią programów ochrony powietrza. Myślę, że to też warto wyjaśnić. To nie ma żadnego związku z zaostrzaniem wymogów. Czyli te (Dzwonek) procesy sądowe nie będą zaostrzać wymogów, to jest tylko blokowanie całego procesu w zakresie programów ochrony powietrza. Nie będę się odnosił do posłów Gróbarczyka i Hoca, bo to nie ma związku z tym projektem. Dziękuję bardzo. (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ź 45 Marek Gróbarczyk 10. kadencja, 63. posiedzenie, 1. dzień (29-07-2026) 3. punkt porządku dziennego: Sprawozdanie Komisji Ochrony Środowiska, Zasobów Naturalnych i Leśnictwa o rządowym projekcie ustawy o zmianie ustawy - Prawo ochrony środowiska (druki nr 277
  2. Wcześniej · wypowiedź 46 Czesław Hoc 10. kadencja, 63. posiedzenie, 1. dzień (29-07-2026) 3. punkt porządku dziennego: Sprawozdanie Komisji Ochrony Środowiska, Zasobów Naturalnych i Leśnictwa o rządowym projekcie ustawy o zmianie ustawy - Prawo ochrony środowiska (druki nr 277
  3. Później · wypowiedź 48 Katarzyna Matusik-Lipiec 10. kadencja, 63. posiedzenie, 1. dzień (29-07-2026) 3. punkt porządku dziennego: Sprawozdanie Komisji Ochrony Środowiska, Zasobów Naturalnych i Leśnictwa o rządowym projekcie ustawy o zmianie ustawy - Prawo ochrony środowiska (druki nr 277
  4. Później · wypowiedź 49 Marcin Józefaciuk 10. kadencja, 63. posiedzenie, 1. dzień (29-07-2026) 3. punkt porządku dziennego: Sprawozdanie Komisji Ochrony Środowiska, Zasobów Naturalnych i Leśnictwa o rządowym projekcie ustawy o zmianie ustawy - Prawo ochrony środowiska (druki nr 277
1. (2.58ms; exec 2.51 + fetch 0.07; 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.48ms; exec 1.46 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
3. (1.55ms; exec 1.52 + fetch 0.03; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3386 ORDER BY ordinal
4. (1.38ms; exec 1.34 + fetch 0.03; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcrip…
5. (1.14ms; exec 1.12 + fetch 0.02; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
6. (1.17ms; exec 1.15 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
7. (0.44ms; exec 0.43 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3384 ORDER BY ordinal
8. (0.93ms; exec 0.92 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
9. (0.68ms; exec 0.67 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
10. (0.73ms; exec 0.71 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3385 ORDER BY ordinal
11. (2.41ms; exec 2.39 + fetch 0.02; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
12. (1.07ms; exec 1.04 + fetch 0.03; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
13. (0.78ms; exec 0.76 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3387 ORDER BY ordinal
14. (1.25ms; exec 1.23 + fetch 0.02; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
15. (0.72ms; exec 0.71 + fetch 0.02; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
16. (0.53ms; exec 0.52 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3388 ORDER BY ordinal
17. (1.47ms; exec 1.45 + fetch 0.01; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_vote…
toggle
1. (2.58ms; exec 2.51 + fetch 0.07; 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 = 13938 LIMIT 1
2. (1.48ms; exec 1.46 + 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 = 13939 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. (1.55ms; exec 1.52 + fetch 0.03; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3386 ORDER BY ordinal
4. (1.38ms; exec 1.34 + 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 = 13890 AND dayStatement.day_revision_id = 13480 AND dayStatement.ordinal BETWEEN 45 AND 49 AND statement.object_id <> 13938 ORDER BY dayStatement.ordinal
5. (1.14ms; exec 1.12 + fetch 0.02; 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 = 13890 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 45) LIMIT 1
6. (1.17ms; exec 1.15 + 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 = 13937 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. (0.44ms; exec 0.43 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3384 ORDER BY ordinal
8. (0.93ms; exec 0.92 + 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 = 13890 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 46) LIMIT 1
9. (0.68ms; exec 0.67 + 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 = 13938 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.73ms; exec 0.71 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3385 ORDER BY ordinal
11. (2.41ms; exec 2.39 + fetch 0.02; 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 = 13890 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 48) LIMIT 1
12. (1.07ms; exec 1.04 + fetch 0.03; 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 = 13940 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.78ms; exec 0.76 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3387 ORDER BY ordinal
14. (1.25ms; exec 1.23 + fetch 0.02; 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 = 13890 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 49) LIMIT 1
15. (0.72ms; exec 0.71 + 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 = 13949 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.53ms; exec 0.52 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 3388 ORDER BY ordinal
17. (1.47ms; exec 1.45 + fetch 0.01; 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 = 0 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-07-29' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
Top slow:
2.58ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.objec…
2.41ms SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.documen…
1.55ms SELECT source_text FROM text_segments WHERE extraction_id = 3386 ORDER BY ordinal
toggle
2.58ms 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 = 13938 LIMIT 1
2.41ms 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 = 13890 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 48) LIMIT 1
1.55ms SELECT source_text FROM text_segments WHERE extraction_id = 3386 ORDER BY ordinal
N+1 candidates:
5× (5.12ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing…
5× (4.03ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (5.73ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON versi…
toggle
5× (5.12ms) 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.03ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (5.73ms) 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: 28.5ms | App: 28.3ms | DB: 20.3ms (17, rows: 19) [exec: 19.9ms, fetch: 0.4ms] | View: 0.5ms (1) | Mem: 2MB (peak: 2MB) | Files: 20
toggle files
(0.45ms) /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