170 похожих чатов

Нужно сделать подгрузку через with у огромного кол-ва моделей, из-за

этого падаю с ошибкой General error: 1390 Prepared statement contains too many placeholder
Хочу переделать на join чтобы был один sql запрос а не whereIn с миллионами элементов в массиве. Но тогда все ломается, т.к. запрос сложный и везде нужно указывать префикс основной таблицы. Какие решения есть? Либо чтобы дать указание того чтобы не писать префикс в where а по дефолту использовать основную таблицу либо аналог with/join чтобы подгрузить большое количество связанных записей (аналог - есть 100к постов у каждого по 10 комментариев, надо подгрузить всё)

15 ответов

99 просмотров

что то не так у тебя с выборкой, зачем тебе тянуть 1кк записей по relation, что-то не так выстроено в логике

Денис- Автор вопроса
Egor Gruzdev
что то не так у тебя с выборкой, зачем тебе тянуть...

а как определить проблему? Могу описать один из кейсов, есть импорт, в цикле поданного на вход элементу надо сопоставить элемент из базы, точнее связанный с ним (абстрактный пример - импорт постов, нужно проверить нет ли поста с определенным комментарием. Если уже есть, то взять его и актуализировать)

Денис
а как определить проблему? Могу описать один из ке...

whereIn() на 1кк возникает, т.к. выборка выбирает 1кк записей, а нужно ли это, почему проверку на существование не проверить через sql запрос, а не как сейчас все выбрал а потому по циклу попытка найти соответствие если без этого не как, то как минимум отказаться от жадной загрузки

Денис- Автор вопроса
Egor Gruzdev
whereIn() на 1кк возникает, т.к. выборка выбирает ...

Если sql запрос на каждой итерации - можно, но получается N+1, а если заранее то мы не знаем какое значение искать, оно ведь в импорте. Пришла еще идея, сделать chunk по 10к записей и каждую такую Eloquent/Collection делать load('comments') подгружать нужное и складывать в общую коллекцию. Будет что-то вроде +- 200 запросов на 1млн записей. Это все в конструкторе

по твоим абстрактным примерам, у тебя посты и коменты должны быть как то свзяаны, сначала по запросу находишь коммент, потом по ид комметна ищешь посты, и по нима уже updateOrCreate

Денис- Автор вопроса
Glyuk_Skovorodkin
по твоим абстрактным примерам, у тебя посты и коме...

В цикле? Ну это самое простое, да. Но это очень накладно по запросам, нужно оптимизировать. Если импорт на 1млн то это габелла по времени к сожалению

Денис
В цикле? Ну это самое простое, да. Но это очень на...

не стольк накладно как 1кк записаей дергать, 5 мелкиих запросов в 1000 раз быстрее твоего на 1кк

Денис
Если sql запрос на каждой итерации - можно, но пол...

что значит лучше? у тебя на вход летят данные, которые нужно добавить или обновить, в твоей концепции загрузить все придется для каждой строки загружаемых данных, выгружать все частями ... ерунда какая то получается и в итоге на 200 новых записей у тебя будет из базы вытянуто 200кк записей

Денис
В цикле? Ну это самое простое, да. Но это очень на...

оптимизация в перую очередь производится исключением ORM лары в запросах, на фасад ДБ сначала переносишь все тяжелые запросы, ток потом логику трогаешь

Денис- Автор вопроса
Egor Gruzdev
что значит лучше? у тебя на вход летят данные, ко...

Нет, это же в конструкторе и только один раз

Денис- Автор вопроса
Egor Gruzdev
что значит лучше? у тебя на вход летят данные, ко...

Делаю загрузку в конструкторе всех данных, потом в цикле просто по коллекции ищем нужное через связь

Денис
Нет, это же в конструкторе и только один раз

а за то что это все в конструторе железной ржавой линейкой по рукам, чтоб больше так не делал

Денис- Автор вопроса
Glyuk_Skovorodkin
оптимизация в перую очередь производится исключени...

Вероятно да, видимо проще обычным DB найти значение, его post_uuid и потом достать модель, не знаю, надо замеры делать что лучше

Денис
Вероятно да, видимо проще обычным DB найти значени...

дело даже не столько в этом, сколько дернуть 1кк строк в виде массива из базы !== сбилдить 1кк объектов модели

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта