|
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
|
|
Одно обращение клиента 20 запросов в MySQLI06.08.2014, 10:34. Показов 1025. Ответов 10
Метки нет (Все метки)
Здравствуйте уважаемы форумчане.
У меня имеется цикл while с 20 итерациями и внутрь этого цикла вложен еще один цикл while который обращается к БД при каждой итерации первого цикла. Я что хочу у Вас спросить! Это вообще приемлемо? Столько обращений к БД за один раз, так вообще дела делаются или же нужен какой-то иной подход? Буду очень признателен за ваши ответы.
0
|
|
| 06.08.2014, 10:34 | |
|
Ответы с готовыми решениями:
10
Ошибка подключения к БД: Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user
Множество запросов mysqli |
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 06.08.2014, 10:50 | |
|
нет, чаще всего не приемлимо. Зачем вложенные циклы?
0
|
|
|
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
|
|
| 06.08.2014, 11:01 [ТС] | |
|
Цель вложенных циклов следующая:
Кто-то из пользователей (далее главный пользователей) оставляет сообщение (с текстом, музыкой и пр.) и таких сообщение может быть порядка десяти, но уже эти сообщения могут комментировать другие пользователи и что у нас получается в итоге: сообщения главного пользователя выводятся в цикле, а сообщения пользователей которые ответили на эти сообщения выводятся в самом цикле и тоже через цикл.
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 06.08.2014, 11:04 | |
|
ну в таком случае, пожалуй, приемлимо.. Только неужели вы выводите сразу все полностью? Обычно (для оптимизации и удобства) выводят число комментов с кнопкой а-ля "показать комментарии", при нажатии на которую отправляется запрос (например, аяксом) на вывод комментов... Представьте, что будет при 100 пользователях и 100 комментах на каждой записи, к примеру. Сколько будет грузиться страница и сколько вы будете листать?
0
|
|
|
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
|
|
| 06.08.2014, 11:08 [ТС] | |
|
Не, ну разумеется у меня имеется постраничная навигация которая работает при помощи ajax.
Все равно мне код почему-то не нравится, может быть вложенные запросы через хранимые процедуры реализовать?
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 06.08.2014, 11:21 | |
|
Вы не поняли. При выводе только числа комментариев делать вложенные запросы не нужно - с этим справится JOIN. В принципе, ваш код тоже можно переписать на JOIN-ы, но тогда придется добавлять проверку
0
|
|
|
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
|
|
| 06.08.2014, 11:26 [ТС] | |
|
Аааа, Вы об этом.
Но я вообще хочу чтобы первые 2 или 3 вложенных комментария отображались, мне кажется так более эстетично. P.S. А не лучше в дополнительное поле таблицы (комментарии от Главных пользователей) записывать количество вложенных сообщений и уже при выводи доставать их оттуда, а не осуществлять еще один запрос с тем же самым JOIN?
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||
| 06.08.2014, 11:34 | ||
|
0
|
||
|
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
|
|
| 06.08.2014, 12:08 [ТС] | |
|
Это да, но ведь оставляют сообщения единицы, а просматривают сотни. Выходит что добавлении мы будем обращаться к БД один раз нежели при получении данных 10 раз.
+ к этому, запись ведь проще осуществить с точки зрения MySQL нежели делать выборку, с учетом того что полей в БД может быть миллион.
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 06.08.2014, 12:24 | |
|
0
|
|
|
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
|
|
| 06.08.2014, 12:51 [ТС] | |
|
MyISAM
Я немного не так выразился. При добавлении нового сообщения нам в любом случае нужно будет проверять существования переданного ID (то есть ID главного сообщения для которого пользователи оставляют свои сообщ.) поэтому нам нужно будет осуществить запрос SELECT, но т.к. нам нужно осуществить обновление а не просто проверка существования, то мы SELECT заменим на UPDATE если он вернет true то выполняем код дальше и в итоге у нас не будет лишнего запроса при добавлении нового сообщения, а при выводе у нас опять же не будет лишних JOIN
0
|
|
| 06.08.2014, 12:51 | |
|
Помогаю со студенческими работами здесь
11
Несколько запросов в одной строке в php mysqli Mysqli получить только одно значение Одно MySQLi соединение на весь сайт Не знаю в чем проблема к бд обращение идет, выдает такую ошибку Warning: mysqli_query() expects parameter 1 to be mysqli Единые объект клиента для всех запросов в express.js Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|