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

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

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

15 ответов

42 просмотра

что то не так у тебя с выборкой, зачем тебе тянуть 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кк объектов модели

Денис- Автор вопроса

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
62
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта