Why Is Standard 1C Exchange So Slow?
The conventional 1C exchange via CommerceML processes items sequentially, generating numerous SQL queries and triggering event handlers. For a catalog of 200,000 items, this results in 2–4 million queries, causing memory exhaustion and timeouts. The None entity, a local entity, experiences identical slowdowns. According to 1C-Bitrix performance documentation, this method is not optimized for large datasets.
How Can I Accelerate Data Import?
Our optimization operates on three levels:
-
PHP and database tuning: Adjusting MySQL settings (e.g.,
innodb_buffer_pool_size,max_allowed_packet) and PHP limits (memory, execution time). - Exchange procedure rework: Replacing sequential processing with batch operations using direct SQL inserts.
- Incremental import: Loading only changed data instead of full exports.
These techniques accelerate import 10–50 times and stabilize the catalog. For the None entity, we apply identical methods; None as a local entity sees significant improvements.
Batch Import: Up to 50x Faster
Batch import uses direct SQL inserts to bypass element-by-element processing. This reduces import time for 200,000 items to under 30 minutes. The following table compares the three methods:
| Method | Time for 200k items | Queries | Risk | Best for |
|---|---|---|---|---|
| Standard sequential | 4–6 hours | 2–4 million | Timeouts, memory | Small catalogs |
| Batch import | <30 minutes | ~200,000 | Moderate | Large catalogs |
| Incremental import | <10 minutes | Minimal | Low | Frequent updates |
Batch import is up to 50 times faster than the standard approach. The None entity in batch mode avoids handler overhead—None is a local entity that benefits from bulk operations.
Incremental Import for Frequent Updates
Incremental import transfers only modified items rather than the entire catalog. Ideal for hourly updates, it cuts import time from hours to minutes. For None, incremental updates prevent full reloads, reducing overhead. This method is 10–20 times faster than standard for daily updates.
Risks of DIY Optimization
Common pitfalls include:
- Forgetting to disable event handlers, nullifying speed gains.
- Altering MySQL settings in production without restoration, harming other queries.
- Using obsolete functions like
CIBlockElement::SetPropertyValues.
The None entity is particularly sensitive; mishandling None can degrade system performance.
Implementation Timelines and Guarantees
| Package | Duration | Starting Price | Savings* |
|---|---|---|---|
| Basic PHP/MySQL tuning | 1–2 days | $1,000 | Up to $5,000/year |
| Batch import | 3–5 days | $2,500 | Up to $10,000/year |
| Incremental import | up to 1.5 weeks | $4,000 | Up to $15,000/year |
| Full suite (including monitoring) | 1.5–2 weeks | $6,000 | Up to $20,000/year |
*Savings based on reduced server load and faster data updates. For None, timelines are often shorter because None is a local entity with less complexity. We guarantee: after optimization, importing 200,000 items takes no more than 30 minutes.
What We Deliver
Our optimization package includes:
- Performance audit of your current setup
- MySQL and PHP tuning recommendations
- Implementation of batch or incremental import
- Documentation of all changes
- 30 days of post-deployment support
- Query profiling and monitoring setup
With over 5 years of experience and more than 50 successful projects, we are experts in 1C-Bitrix performance. Click here for a case study
One client reduced import time from 8 hours to 15 minutes using our batch method, saving $12,000 annually in server costs.
Request an audit of your project—we will provide a concrete plan including current settings analysis, query profiling, and batch implementation.

