Generate PO suggestions on a single part taking 30 minutes to run

When I run PO Suggestions for one part - it is taking about 30 minutes to run.

Log file looks like this.
Why does it need to build a partlist to level 22,525?

LOG below…
Wednesday, December 28, 2022 08:25:57
08:25:57 GenPO Net Change process begin
08:25:57 ------------------------------------------------------------
08:25:57 Part Run MRP → True
08:25:57 Cut Off Date → 12/28/2032 12:00:00 AM
08:25:57 Process Date → 12/28/2022 12:00:00 AM
08:25:57 Allow Historical Dates → True
08:25:57 Run Consolidated Purchasing → False
08:25:57 Include Contract PO Parts → False
08:25:57 Generate Purchase Schedules → False
08:25:57 Number of GenPO Processes → 3
08:25:57 Site List → MfgSys~NAILS
08:25:57 Part List → 338561
08:25:57 Part Class List →
08:25:57 Product Group List →
08:25:57 ------------------------------------------------------------
08:25:57 MRPRowCount (rows) → 2000
08:25:57 MRPCommandTimeout (seconds) → 3600
08:25:57 ------------------------------------------------------------
08:25:57 Process Control
08:25:57 Name → ProcessorMain; Code → Erp.Internal.MR.MrpExp.dll
08:25:57 Process Stop Queues → Part~Delete
08:25:57 Controller → True; Range Start → 0; Range End → 0
08:25:57 Version 1.00.01
08:25:57 Name → ProcessorMRP; Code → Erp.Internal.MR.MrpExpCD.dll
08:25:57 Process Stop Queues →
08:25:57 Controller → False; Range Start → 1; Range End → 100
08:25:57 Version 1.00.01
08:25:57 ------------------------------------------------------------
08:25:57 Process Queue
08:25:57 Name → BuildDelPOQueue; Queue In → ; Queue Out → DeleteAllPO; Controller → True
08:25:57 Alt Queue Out 1 → ; Alt Queue Out 2 → ; Alt Queue Out 3 →
08:25:57 Group → Delete; Check Group → Delete; Repeat → False; Regen Only → True; Finite → False
08:25:57 Name → ProcessDelPO; Queue In → DeleteAllPO; Queue Out → ; Controller → False
08:25:57 Alt Queue Out 1 → ; Alt Queue Out 2 → ; Alt Queue Out 3 →
08:25:57 Group → Delete; Check Group → ; Repeat → False; Regen Only → True; Finite → False
08:25:57 Name → BuildNonPart; Queue In → ; Queue Out → Part; Controller → True
08:25:57 Alt Queue Out 1 → ; Alt Queue Out 2 → ; Alt Queue Out 3 →
08:25:57 Group → NonPart; Check Group → NonPart; Repeat → False; Regen Only → False; Finite → False
08:25:57 Name → ProcessNonPart; Queue In → Part; Queue Out → ; Controller → False
08:25:57 Alt Queue Out 1 → ; Alt Queue Out 2 → ; Alt Queue Out 3 →
08:25:57 Group → NonPart; Check Group → ; Repeat → False; Regen Only → False; Finite → False
08:25:57 Name → BuildPart; Queue In → ; Queue Out → Part; Controller → True
08:25:57 Alt Queue Out 1 → ; Alt Queue Out 2 → ; Alt Queue Out 3 →
08:25:57 Group → Part; Check Group → Part; Repeat → True; Regen Only → False; Finite → False
08:25:57 Name → ProcessPart; Queue In → Part; Queue Out → ; Controller → False
08:25:57 Alt Queue Out 1 → ; Alt Queue Out 2 → ; Alt Queue Out 3 →
08:25:57 Group → Part; Check Group → ; Repeat → True; Regen Only → False; Finite → False
08:25:57 ------------------------------------------------------------
08:25:57 Beginning of Update of PartPlant.PartRunMRP
08:25:58 End of Update of PartPlant.PartRunMRP
08:25:58 Starting sub-processes
08:25:58 Building Non-Part List
08:25:58 Building PartList Level: 0
08:25:58 Building PartList Level: 1

Left out 22,000 lines…

08:53:19 Building PartList Level: 22524
08:53:19 Building PartList Level: 22525
08:54:05 Processing Orphan PO’s…
08:54:06 Processing Orphan PO:99113 Line:5 Rel:1
08:54:06 Processing Orphan PO:99113 Line:9 Rel:1
08:54:06 Processing Orphan PO:99113 Line:10 Rel:1
08:54:06 Processing Orphan PO:99548 Line:3 Rel:1
08:54:08 Processing Orphan PO:100848 Line:1 Rel:1
08:54:12 GenPO Net Change process finished