ставлю 10 , при запросе приложение начинает бесконечно грузиться и зависает, как можно это исправить?
может цикл
Фильтры в where ставить и индексы строить. Limit накладывается уже после того, как построена вся выборка, так что на скорость он влиять особо не будет.
Какой код? Какой запрос выполняется? Что за база? Индексы?
Будет. Как только наберётся нужно число записей поиск прекратится. Даже если в запросе order by без индексов, базе придётся пройтись по всей таблице, но в результирующей выборке можно хранить часть таблицы, а не всю.
Подскажите пожалуйста в чем может быть ошибка ? При выполнении данного запрос приложение начинает бесконечно грузиться и потом выбивает ошибку 504 Gateway Time-out Функция для получения постов: public static function getPosts($id, $ids) { $db = Yii::$app->db; //получение id постов $command = $db->createCommand('SELECT item_id FROM posts WHERE res_id = :id AND type IN (:ids)'); $parameters = [ ':id' => $id, ':ids' => $ids ]; $command->bindValues($parameters); $result = $command->queryAll(); //приведение id постов к строке idшников $postsIds = ''; foreach($result as $post) { if(strlen($postsIds) == 0) { $postsIds .= $post['item_id']; } else { $postsIds .= ',' . $post['item_id']; } } //получение постов $dbposts = Yii::$app->dbposts; $commandPosts = $dbposts->createCommand('SELECT * FROM posts WHERE type IN (:ids) AND id IN (:postsIds) LIMIT 10'); $parametersPosts = [ ':ids' => $ids, ':postsIds' => $postsIds ]; $commandPosts->bindValues($parametersPosts); $com = $commandPosts->getRawSql(); var_dump($com); // $result = $command->queryAll(); // return $result; // return $com; } запрос, приложение начинает бесконечно грузится даже когда пытаюсь вывести сам запрос через $com = $commandPosts->getRawSql(); var_dump($com); база clickhouse, индекс в таблице posts на id. Если в tabix выполняю данный запрос SELECT * FROM posts WHERE posts.type IN (1,4) AND posts.id IN (3142146256,3658056161,3261044749,3365149015,3298121984) LIMIT 10 то посты получаю
Вы биндите :ids и :postsIds как строки с разделителем запятая. На сколько я помню они так и подставятся как строка в кавычках, а не как список айдишников. Это конечно не объясняет почему зависает приложение, надо смотреть лог ошибок.
из одной базы ты достаешь 2 раза одни и те же данные?
нет , с одной idшники , сдругой по этим id беру посты, база с id mariadb , c постами клик
Ну вот с первой базы выбирается 0 постов, а во втором запросе это каким-то образом все ломает
он бы тогда в 500 падал, как синтаксис неверный
синтаксис верный, это не ошибка
не я проверяю на аке у которого 100% приходят id постов
После первого foreach - $postsIds чему равно?
"3142146256,3658056161,3261044749,3365149015,3298121984"
Обсуждают сегодня