---
title: "insert() vs create() - масові операції правильно"
url: https://laravelukraine.com/blog/insert-vs-create-masovi-operaciyi-pravilno
date: 2026-06-15
---

# insert() vs create() - масові операції правильно

При створенні 1,000 записів в циклі? Кожен `create()` звертається до бази окремо.

`insert()` надсилає всі записи одним запитом. В 100 разів швидше.

**Компроміс:**

- `create()` запускає події, заповнює timestamps, повертає модель
- `insert()` пропускає все, просто сирий SQL insert

**Коли використовувати insert():**

- Заповнення бази даних
- Імпорт великих наборів даних
- Фонові пакетні jobs

Порада: Використовувати `upsert()` для масових операцій insert-or-update в Laravel 8+.

```php
// ПОГАНО: 1000 окремих запитів
foreach ($records as $record) {
    User::create($record); // Повільно
}

// ДОБРЕ: Один запит для всіх
User::insert($records);

// З timestamps
$now = now();
$records = collect($records)->map(function ($record) use ($now) {
    return array_merge($record, [
        'created_at' => $now,
        'updated_at' => $now,
    ]);
})->toArray();

User::insert($records);

// Upsert - вставити або оновити
User::upsert(
    [
        ['email' => 'john@example.com', 'name' => 'John'],
        ['email' => 'jane@example.com', 'name' => 'Jane'],
    ],
    ['email'], // Унікальна колонка
    ['name'] // Оновити ці колонки
);
```
