Stenogram Sejmu · 2026-06-17

Arkadiusz Marchewka

Kadencja 10 · posiedzenie 60 · wypowiedź 84

Profil posła

Klub podany w głosowaniu imiennym tego posła w tym samym dniu i posiedzeniu: KO · dowód głosu. Nie jest to pełna historia członkostwa.

Pełna wypowiedź

10. kadencja, 60. posiedzenie, 1. dzień (17-06-2026) 4. punkt porządku dziennego: Sprawozdanie Komisji Finansów Publicznych oraz Komisji Gospodarki Morskiej i Żeglugi Śródlądowej o rządowym projekcie ustawy o zmianie niektórych ustaw w celu wsparcia przedsiębiorstw żeglugowych oraz stworzenia warunków ich funkcjonowania pod polską banderą (druki nr 2549 i 2636). Sekretarz Stanu w Ministerstwie Infrastruktury Arkadiusz Marchewka: Szanowny Panie Marszałku! Wysoka Izbo! To jest polska bandera ze statku, który nazywał się Ziemia Gnieźnieńska. Ona została w 2004 r. zdjęta z ostatniego statku należącego do Polskiej Żeglugi Morskiej. Odpowiedzmy sobie na pytanie, dlaczego tak się stało. Stało się tak, dlatego że od wielu lat prowadzenie działalności żeglugowej w Polsce jest po prostu nieopłacalne. Jeżeli przedsiębiorstwa żeglugowe konkurują w żegludze międzynarodowej, to muszą rejestrować statki tam, gdzie jest to po prostu tańsze. Inaczej nie byłyby te przedsiębiorstwa konkurencyjne, bo wyższe koszty prowadzenia działalności nakazywałyby podwyższanie ceny frachtu. Wtedy, można powiedzieć, nikt by nie chciał z ich usług korzystać. Od blisko 30 lat podejmowane są działania dotyczące rejestrowania, również przez polskich armatorów, statków pod obcymi banderami. My to zmieniamy. Prowadzenie działalności żeglugowej w Polsce znów będzie opłacalne. Mamy 770 km wybrzeża, blisko 35 tys. marynarzy, oficerów i kapitanów, a zaledwie 14 statków floty morskiej pod polską banderą. Najwyższy czas to zmienić. Najwyższy czas stworzyć warunki, które pozwolą prowadzić w sposób opłacalny działalność żeglugową w Polsce. Co przygotowaliśmy? Po pierwsze, niski podatek tonażowy. Zamiast podatku CIT armatorzy zapłacą niski podatek tonażowy. Ale jak to będzie wyglądało w praktyce, np. dla statków, które są takimi flagowymi jednostkami należącymi do polskich armatorów? W dzisiejszych warunkach taki armator musiałby rocznie zapłacić podatku CIT ponad 0,5 mln zł. Dzięki naszej propozycji zapłaci zaledwie 15 tys., czyli 96% mniej. Drugi element to zwolnienie marynarzy z podatku PIT. Obecnie taka możliwość oczywiście istnieje, ale tylko w momencie, w którym marynarz przepracuje na morzu 183 dni. To sprawia, że raczej jest nieprzychylny pływaniu pod polską banderą. Bo co się stanie, jeśli przekroczy ten limit albo zacznie kontrakt w drugiej połowie roku? Wtedy będzie musiał zapłacić duży podatek, więc mógłby sobie pomyśleć: lepiej pływać pod zagraniczną banderą niż pod polską. Byłby też problem oczywiście dla armatorów ze znalezieniem załóg. My to zmieniamy całkowicie, znosząc limit 183 dni dla marynarzy. Co więcej, we współpracy z parlamentarzystami została wprowadzona poprawka do ustawy, która daje możliwość zwolnienia właśnie z konieczności płacenia podatku PIT również marynarzy pływających na statkach offshore. Jest to branża i gałąź gospodarki morskiej, która bardzo dynamicznie się rozwija. Jest to ukłon również w stronę kilku tysięcy marynarzy, którzy będą mogli zostać zwolnieni dzięki tej propozycji z konieczności płacenia podatku PIT. Jako rząd, oczywiście we współpracy z komisją i parlamentarzystami, przyjęliśmy te zobowiązania. Trzecim elementem są niższe koszty pracy. Dlatego już funkcjonuje ustawa zaproponowana i przyjęta przez Parlament, dotycząca ubezpieczenia społecznego marynarzy na niskich, preferencyjnych warunkach po to, aby również koszty pracy w Polsce dla armatorów w kontekście marynarzy były niższe. To są takie trzy filary, które są istotne z punktu widzenia działalności armatorów, czyli przedsiębiorstw prowadzących działalność żeglugową. Jestem przekonany, że to, co zostało w tej ustawie wypracowane, jest wynikiem szerokich konsultacji z branżą. Wszystkie zapisy, które znalazły się w tej ustawie, szeroko konsultowaliśmy z największymi polskimi armatorami: ze Związkiem Armatorów Polskich i z Polskim Związkiem Przedsiębiorców Żeglugowych. To są organizacje, które skupiają największych polskich armatorów, i właśnie te zapisy są odpowiedzią na ich oczekiwania, na ich propozycje i na to, co jest niezbędne, aby uczynić polską banderę atrakcyjną po blisko 30 latach przerwy. Musicie państwo przyznać, że mamy firmy żeglugowe, które mają 75-letnią tradycję, i port o podstawowym znaczeniu dla gospodarki narodowej, który rozwijamy, inwestując w niego miliardy złotych. Mamy też wielką, wspaniałą historię. Stoimy zawsze przodem do morza, jednak w kontekście prowadzenia działalności żeglugowej przez ostatnie 30 lat rzeczywiście ta sytuacja nie została przez nikogo rozwiązana. My w końcu ten problem rozwiązujemy. 35 tys. marynarzy, 770 km wybrzeża i tylko 14 statków pod polską banderą. Czas to zmienić i wprowadzić konkretne zapisy, które sprawią, że prowadzenie działalności żeglugowej w Polsce będzie znów opłacalne. Myślę, że w momencie, kiedy te przepisy podatkowe wejdą w życie, czyli od początku 2027 r., rozpocznie się proces przeflagowywania statków, których dzisiaj nasi armatorzy mają ok. 100. Odpowiem teraz na pytania państwa posłów. Pierwsze pytanie zadała pani poseł Czechak, która pytała m.in. o to, ilu marynarzy może to dotyczyć. Tak jak wspomniałem, jest to 35 tys. marynarzy, oficerów i kapitanów. To jest liczba, która jest spektakularna i praktycznie należy do najwyższych, jeśli chodzi o Unię Europejską, bo to jest drugie miejsce. To pokazuje, że mamy wielki potencjał w tych działaniach. Natomiast ze zwolnienia z podatku PIT - w związku z tym, że są tylko 183 dni - spośród tych 35 tys. w 2024 r., bo za ten okres mamy dane, skorzystało 149 osób. To bardzo mało. A więc dzięki tym przepisom wszyscy marynarze, bez względu na to, czy wypływają w te 183 dni, zostaną zwolnieni z PIT. To jednak oczywiście nie jest tak, że oni korzystali z tego zwolnienia w innych krajach, np. pływając pod cypryjską banderą czy pod banderą Malty, bo tam oczywiście też tego wymogu nie ma. Podejmujemy działania, które sprawią, że prowadzenie działalności żeglugowej i w przypadku armatorów, i w przypadku marynarzy sprawi, że warunki pracy będą konkurencyjne, a na pewno tak dobre jak na Cyprze, jeśli nie lepsze. Drugie pytanie dotyczyło marynarzy pływających na statkach offshore. Tak jak zostało wspomniane, projekt ustawy został rozszerzony i dodano do tego zwolnienia marynarzy, którzy pływają na statkach związanych z morską energetyką wiatrową czy szeroko rozumianym offshorem. Szacujemy tę liczbę na kilka tysięcy. Pani posłanka Bożena Lisowska pytała o notyfikację. Tak, zakładamy, że po przyjęciu tej ustawy notyfikacja zostanie zrealizowana do końca 2026 r. i że otrzymamy zgodę na stosowanie przepisów, które są zawarte w ustawie. Pan poseł Gróbarczyk, który niestety poszedł, a który przez 8 lat był ministrem, mówił o jakimś serialu. Myślę, że wszyscy państwo wiecie, więc nie będę tutaj się wyzłośliwiał, że serial o niekompetencji i złych decyzjach w gospodarce morskiej już się skończył i teraz przyszedł czas fachowców. Chcę zwrócić uwagę na to, że liczba statków handlowych zarejestrowanych pod polską banderą, kiedy pan poseł był ministrem, wyniosła okrągłe zero. Myślę, że to jest najlepsza odpowiedź na te kwestie. Warto oczywiście też dodać, że gazowce, które przywożą strategiczny surowiec do terminala w Świnoujściu, wydzierżawione przez Orlen, a wybudowane przez norweską firmę w koreańskiej stoczni i zarejestrowane pod francuską banderą, doskonale podsumowują 8 lat pracy mojego poprzednika. Są tacy, którzy mówią, że nazwanie statku imieniem prezydenta Lecha Kaczyńskiego było czymś istotnym. Jedni mówią: my mamy honor, oni mają pieniądze. Tak to zostało przedstawione. Statki zostały wybudowane przez norweską firmę w Korei i zarejestrowane we Francji pod francuską banderą. Nie ma tam ani jednego Polaka, ale nazywają się dumnie np. ˝Lech Kaczyński˝. Myślę, że to jest najlepsze podsumowanie tych działań. Pan poseł Sachajko mówił o tym, że w tytule jest polska bandera, a w rzeczywistości dotyczy to państw Unii Europejskiej i Europejskiego Obszaru Gospodarczego. Chcę zwrócić uwagę, że te wytyczne i te środki pomocowe przewidziane przez Komisję Europejską dla państw europejskich są dla wszystkich państw takie same. Dzisiaj polscy armatorzy korzystają z przepisów o podatku tonażowym, tylko że na Cyprze, więc to jest kwestia wspólnego rynku. Odpowiadając na pytanie o to, ilu to jednostek może dotyczyć, powiem, że mamy ok. 100 statków, więc polscy armatorzy posiadają ok. 100 jednostek. Pan poseł Sachajko mówił też o podatku tonażowym i o tym, że będziemy dawać preferencje podatkowe firmom, które są spoza Polski. Nie do końca tak jest, dlatego że armator, który będzie korzystał z podatku tonażowego, musi prowadzić działalność gospodarczą w Polsce, ponieważ jest to alternatywa dla podatku CIT. A więc jeśli dzisiaj płaci on podatek CIT albo płaciłby podatek CIT, to mógłby teraz płacić podatek tonażowy. Nie może być tak, że będzie to dotyczyło przedsiębiorstw zagranicznych, które w żaden sposób nie prowadzą działalności w Polsce. Nie, tak nie będzie i tutaj dementuję tę kwestię. Dzisiaj przedsiębiorstwa żeglugowe w zdecydowanej większości prowadzą działalność poza Polską. Dla przykładu mogę państwu podać, że np. Mongolia ma większy tonaż pod własną narodową banderą niż Polska. Większy tonaż pod swoją banderą ma Luksemburg. Większy tonaż pod swoją banderą ma np. Szwajcaria. To są kraje bez dostępu do morza. To jasno pokazuje, że nawet gdyby armatorzy zagraniczni rejestrowali statki w Polsce, to płaciliby podatki tutaj. Dzisiaj ich niech płacą wcale. Z punktu widzenia interesu budżetu państwa jest więc dużo korzystniejsze, żeby wpływały do budżetu państwa podatki niskie, ale żeby wpływały, niż żeby nie wpływały żadne podatki z tej działalności. I to jest oczywiste w tej kwestii. Pan poseł Wicher pytał o kwestie związane z apteczkami, pytając: Jak to jest możliwe, że nie można było kupować leków na statki. Niestety, panie pośle, muszę z dużą przykrością powiedzieć, że to jest efekt zmian w ustawie - Prawo farmaceutyczne, które to zmiany zostały wprowadzone do ustawy za czasów rządu Prawa i Sprawiedliwości. To wtedy zabroniono wywozu leków za granicę, co sprawiało, że na polskie statki, na statki polskich armatorów nie można było kupić leków Rozwiązywano to więc w najprostszy sposób, czyli po prostu kupowano leki za granicą, bo w Polsce było to zabronione. A mówiąc wprost, chyba zapomniano do ustawy, nad którą procedujemy, po prostu dopisać zmianę, która dawałaby możliwość zaopatrywania statków w leki. A więc, panie pośle, naprawiamy ten błąd. Pan poseł Ziejewski mówił o stawkach, które są pobierane obecnie m.in. przez Cypr i przez Maltę. Tam nasi armatorzy rejestrują statki. My tą ustawą wprowadzamy takie rozwiązania, które sprawią, że dla jednostek, które są flagowymi jednostkami polskich armatorów, stawki będą najniższe w Unii Europejskiej, niższe niż na Cyprze, niższe niż na Malcie, niższe niż w Chorwacji. Dla takiego flagowego masowca polskiej żeglugi morskiej, który ma 200 metrów długości i 13 tys. t, to będą najniższe stawki w Unii Europejskiej. Można więc powiedzieć, że najbardziej skorzystają na tym polscy armatorzy, w tym ten polski największy, należący do Skarbu Państwa. Pan poseł Wałęsa mówił o tym, co się wydarzyło od 2015 r. do 2023 r. w kontekście statków offshore. Nic. Mogę tylko podać taki przykład, że w Świnoujściu sprzedano stocznię należącą do Skarbu Państwa. Następnie teren po tej stoczni sprzedanej za rządów PiS przejął Orlen, który rozpoczął tam budowę portu instalacyjnego dla morskich farm wiatrowych budowanych przez tę spółkę. Tak się złożyło, że pomimo zainwestowanych setek milionów złotych w czerwcu 2023 r. podjęto decyzję, że portem instalacyjnym dla morskich farm wiatrowych, dla tej pierwszej fazy inwestycji Orlenu będzie duński port w Rönne na Bornholmie. (Poseł Jarosław Wałęsa: Okropne.) A więc część elementów farm wiatrowych, które płynęły ze Szczecina, mijały terminal należący do Orlenu, płynęły na Bornholm do Danii, tam były wyładowywane i stamtąd przekazywane dalej na morze. Myślę, że to jest też dobry przykład, jak to za tamtych czasów wyglądało. Pan poseł Tumanowicz pytał, ile statków, ilu marynarzy to może dotyczyć. Szacujemy, że może być (Dzwonek) to aż kilka tysięcy osób, dlatego że to będzie dotyczyć nie tylko marynarzy pracujących na polskich obszarach morskich, ale generalnie w sektorze offshore, tak jak zresztą dotyczy to marynarzy pływających na statkach handlowych. A więc może być to kilka tysięcy osób. Natomiast ostatnie pytanie od pana przewodniczącego Szymańskiego było w kontekście podwójnych interpretacji. Tak, zdajemy sobie z tego sprawę, bardzo wnikliwie analizujemy tę kwestię. Tu jest kwestia przygotowania przez Krajową Administrację Skarbową szczegółowych wytycznych, jasnych dla marynarzy w tym zakresie. Chcę zapewnić pana posła, że wkrótce te propozycje zostaną przedstawione tak, aby nigdy więcej nie było podwójnej interpretacji przepisów. Wszyscy marynarze powinni być traktowani w ten sam sposób. Ta ustawa jest ustawą o przywróceniu polskiej bandery, o poprawie warunków, które sprawią, że prowadzenie działalności będzie, mówiąc wprost, bardziej opłacalne. Nie chcielibyśmy tą ustawą regulować wszystkiego, co jest sprawą istotną dla marynarzy, ale nie dotyczy wprost przywrócenia polskiej bandery, więc mogę deklarować, że wkrótce, w ciągu kilku tygodni te propozycje we współpracy z Ministerstwem Finansów, bo chcę zaznaczyć, że to jest w kwestii Ministerstwa Finansów, zostaną przedstawione. Tak, dostrzegamy ten problem, tę kwestię i jest ona wnikliwie analizowana, po to by przedstawić efektywne rozwiązanie tej sprawy. 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ź 82 Witold Tumanowicz 10. kadencja, 60. posiedzenie, 1. dzień (17-06-2026) 4. punkt porządku dziennego: Sprawozdanie Komisji Finansów Publicznych oraz Komisji Gospodarki Morskiej i Żeglugi Śródlądowej o rządowym projekcie ustawy o zmianie niektórych ustaw w celu
  2. Wcześniej · wypowiedź 83 Krzysztof Szymański 10. kadencja, 60. posiedzenie, 1. dzień (17-06-2026) 4. punkt porządku dziennego: Sprawozdanie Komisji Finansów Publicznych oraz Komisji Gospodarki Morskiej i Żeglugi Śródlądowej o rządowym projekcie ustawy o zmianie niektórych ustaw w celu
  3. Później · wypowiedź 85 Jarosław Wałęsa 10. kadencja, 60. posiedzenie, 1. dzień (17-06-2026) 4. punkt porządku dziennego: Sprawozdanie Komisji Finansów Publicznych oraz Komisji Gospodarki Morskiej i Żeglugi Śródlądowej o rządowym projekcie ustawy o zmianie niektórych ustaw w celu
  4. Później · wypowiedź 86 Marcin Józefaciuk 10. kadencja, 60. posiedzenie, 1. dzień (17-06-2026) 4. punkt porządku dziennego: Sprawozdanie Komisji Finansów Publicznych oraz Komisji Gospodarki Morskiej i Żeglugi Śródlądowej o rządowym projekcie ustawy o zmianie niektórych ustaw w celu
1. (2.67ms; exec 2.64 + fetch 0.04; 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. (0.92ms; exec 0.91 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
3. (0.76ms; exec 0.74 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7060 ORDER BY ordinal
4. (0.91ms; exec 0.88 + fetch 0.03; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcrip…
5. (1ms; exec 0.99 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
6. (0.63ms; exec 0.62 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
7. (1.24ms; exec 1.23 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7058 ORDER BY ordinal
8. (1.37ms; exec 1.36 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
9. (1.21ms; exec 1.19 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
10. (0.71ms; exec 0.7 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7059 ORDER BY ordinal
11. (1.2ms; exec 1.2 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
12. (1ms; exec 0.99 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
13. (0.64ms; exec 0.63 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7061 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. (1.07ms; exec 1.06 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
16. (0.72ms; exec 0.71 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7062 ORDER BY ordinal
17. (2.56ms; exec 2.54 + fetch 0.02; rows 1) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_vote…
toggle
1. (2.67ms; exec 2.64 + fetch 0.04; 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 = 16670 LIMIT 1
2. (0.92ms; exec 0.91 + 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 = 25003 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.76ms; exec 0.74 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7060 ORDER BY ordinal
4. (0.91ms; exec 0.88 + 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 = 16585 AND dayStatement.day_revision_id = 16203 AND dayStatement.ordinal BETWEEN 82 AND 86 AND statement.object_id <> 16670 ORDER BY dayStatement.ordinal
5. (1ms; exec 0.99 + 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 = 16585 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 82) LIMIT 1
6. (0.63ms; exec 0.62 + 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 = 24992 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.24ms; exec 1.23 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7058 ORDER BY ordinal
8. (1.37ms; exec 1.36 + 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 = 16585 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 83) LIMIT 1
9. (1.21ms; exec 1.19 + 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 = 24993 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.71ms; exec 0.7 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7059 ORDER BY ordinal
11. (1.2ms; exec 1.2 + 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 = 16585 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 85) LIMIT 1
12. (1ms; exec 0.99 + 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 = 25004 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.64ms; exec 0.63 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7061 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 = 16585 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 86) LIMIT 1
15. (1.07ms; exec 1.06 + 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 = 25005 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.72ms; exec 0.71 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 7062 ORDER BY ordinal
17. (2.56ms; exec 2.54 + fetch 0.02; rows 1) 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 = 60 AND individual.mp_number = 231 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-06-17' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
Top slow:
2.67ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.objec…
2.56ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes indiv…
1.37ms SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.documen…
toggle
2.67ms 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 = 16670 LIMIT 1
2.56ms 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 = 60 AND individual.mp_number = 231 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-06-17' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
1.37ms 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 = 16585 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 83) LIMIT 1
N+1 candidates:
5× (4.83ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing…
5× (4.07ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (4.73ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON versi…
toggle
5× (4.83ms) 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.07ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (4.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: 25.2ms | App: 25ms | DB: 19.8ms (17, rows: 20) [exec: 19.5ms, fetch: 0.2ms] | View: 0.4ms (1) | Mem: 2MB (peak: 2MB) | Files: 20
toggle files
(0.41ms) /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