50,000 Full Update
Super Speedy Imports applied a full 50,000-product update in ~60 seconds — around 1,100–1,200× faster than WP All Import Pro, which took 20h 11m for the same update on the same server. This is the everyday operation for a shop on a supplier feed, and it’s the single most decisive result in our testing. Full timings, dataset and a reproduce bundle below.
Summary
- Result: ~1,100–1,200× faster than WP All Import Pro (≈60s vs 20h 11m).
- Scenario: a full update of an existing 50,000-product catalogue — 47,500 kept, 5,000 changed, 2,500 added, 2,500 removed.
- Image-independent: updates resolve images from the existing library (no re-download), so this result carries no image caveat.
- SPRO: makes the update fast and stable — see the dedicated Super Speedy Imports + Scalability Pro run.
- Reproducible: full dataset + configs linked below.
Multiple runs (wall-clock seconds, 8 parallel workers):
| Config | Run 1 | Run 2 | Products |
|---|---|---|---|
| SSI (no SPRO) | 66s | see note | 50,000 |
| SSI (+ SPRO) | 61s | 59s | 50,000 |
Note: the second no-SPRO repeat was lost to an early test-harness timeout cap (since removed). The no-SPRO update is also bimodal — see key findings — which is exactly why we recommend SPRO for recurring imports.
Results
| Metric | WP All Import Pro | SSI | SSI + SPRO |
|---|---|---|---|
| Total time | 20h 11m (72,685s) | 66s | 59–61s |
| Records / sec | ~0.69 | ~758 | ~820–847 |
| Speed-up vs WPAI | 1× | ~1,100× | ~1,190–1,230× |
Per-stage breakdown (SSI, standard run)
| Stage | Duration |
|---|---|
| load-csv | 19.55s |
| import-taxonomies | 0.03s |
| match-existing | 2.30s |
| update-posts | 0.59s |
| insert-posts | 1.01s |
| update-postmeta | 10.68s (SPRO cuts this to ~4.3s) |
| insert-postmeta | 2.92s |
| attach-existing-images | 3.06s |
| upsert-relationships | 2.24s |
| upload-remote-images | 2.07s |
| process-variable-products | 2.12s |
| attach-gallery-images | 5.81s |
| fix-attributes | 9.87s |
| process-deletes | 0.29s |
| Total stage time | 64.71s |
Key findings
- This is the strongest, most defensible result we have. A recurring full update is what most shops actually do every day against a supplier feed — and SSI turns a 20-hour job into a one-minute one.
- SPRO makes the update fast and reliable. Without SPRO the update is bimodal: ~66s when MariaDB picks a good query plan for the bulk postmeta UPDATE, but it can blow out to over 30 minutes when it picks a full-scan plan. SPRO’s performance index removes that cliff — every SPRO run lands at a stable ~60s. For recurring imports, use SPRO.
- The work is spread evenly across stages (no single dominant stage, unlike the image-heavy fresh import) — because there are no images to download, this is pure database work, and SSI does it in bulk SQL.
↔ Compare: the same update with Scalability Pro (stable ~60s), or from WP All Import’s side — 20h 11m / 2h 23m with SPRO.
Methodology
Environment
- Server: Hetzner CPX32 — 4 vCPU (AMD), 8 GB RAM, 160 GB SSD, Ubuntu 24.04 LTS.
- Stack: WooCommerce 10.3, PHP 8.2, MariaDB 10.6, WordPress 7.0.
- Plugins: Super Speedy Imports 2.55.7 (8 parallel workers, default); WP All Import Pro 5.0.6 + WooCommerce add-on 4.0.6 (defaults).
Test setup
- Source: a 50,000-row update feed derived from the original 50k catalogue (47,500 kept + 2,500 added + 2,500 removed + 5,000 changed).
- Workers: 8 (SSI default).
- Runs: SPRO ×2 (59s, 61s); no-SPRO ×1 valid (66s).
- State: update applied over an existing loaded 50k catalogue; snapshot-reset between runs.
- Images: resolved from the existing media library — no downloads.
Rules & measurement
- Same update feed, same hardware, same scope, same expected end-state (50,000 products, 2,500 trashed) for both plugins.
- Headline figure is total wall-clock duration; records/sec is derived from it.
This is not intended as a universal benchmark — your data shape, hardware and hosting will differ. It is one carefully controlled, fully reproducible scenario.
Dataset
- Products: 50,000 existing, of which 5,000 changed, 2,500 added, 2,500 removed.
- Taxonomies: product_cat, product_brand, plus variation attributes pa_color and pa_size.
- Metadata: SKU, regular/sale price, weight.
- Images: already present from the initial load — not re-downloaded during the update.
Reproduce
Everything needed to repeat this run is in the bundle below: the update feed, the taxonomy definitions, the Super Speedy Imports config, the WP All Import template, and our raw timing results.
- Download: ssi-benchmark-50000-update.zip
- Contains the update + original feeds,
taxonomies.json, the SSI configs,wpai-template-export.json, results JSON and aHOW-TO-REPRODUCE.md.
Steps (Super Speedy Imports)
- Start from a loaded 50,000-product WooCommerce catalogue with Super Speedy Imports installed.
- Register the taxonomies (if not already):
wp ssi import-taxonomies taxonomies.json - Create the update import:
wp ssi create benchmark product /path/to/shirt-test-50k-update.csv ssi-import-config.json - Run it:
time wp ssi <id> --workers=8(with Scalability Pro active for the stable ~60s result).
If your results differ significantly, tell us — we’d like to know.
FAQ
Is a 20-hour update realistic for WP All Import?
It’s what we measured on this hardware for a full 50,000-product update. WP All Import re-processes each row individually, and that cost compounds at scale. The run produced a correct catalogue — the difference is purely time.
Why is SPRO separate?
Scalability Pro is a distinct product. On updates it’s decisive — it removes a worst-case database query plan that can otherwise make the update unpredictable. We show it separately so you can see exactly what it changes.
Can I reproduce this locally?
Yes — download the bundle above. Absolute times depend on your hardware, but the relative speed-up should hold.