Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
<?
две таблицы
аккаунты
ид
имя
ид_машины(уникальный)
машины
ид
номер машины
каждому человеку уникальная машина, не может быть у двух одинаковой, это решено на уровне базы.
машин там есть с избытком.
Теперь задача появился новый человек, как мне брать ему машину я делаю так.
$alredyuse = \App\Acaunt::whereNotNull("car_id")->pluck("car_id")->all();
// выбираются все машины уже занятые
$car = \App\Car::whereNotIn('id', $alredyuse)->firstOrFail();
//берем тачку исключя занятые
сейчас у мня в первой 100 и во второй 1500 записей и уже в момент запроса проц умирает, чувствуется как начинает крутить на 100%, хотя он i7-6700K относительно современный, а планируется гдет 10к и 20к записей.
Вопрос как решаются такие задачи вообще в крупных системах, то есть как вбирать незанятые. Мне кажется ошибка тут даже в первой строчке, нельзя делать такие запросы в коде чтобы в памяти переменной была вся таблица фактически.
Не в сети
почему не добавить поле занята машина или нет?
Не в сети
почему не добавить поле занята машина или нет?
это не безопасно, нет гарантии что в момент удаления юзера, или в момент смены машины у юзера, все будет проставлено как нужно. Тут вопрос не тока в том что программист забудет, а в том что в случае лага на сервере может проявится висяк который будет накапливаться.
Не в сети