Я читаю mysqli_store_result
и не понимаю, почему это отказ, а не отказ. Согласно руководству я не должен использовать это для операций с памятью, но при условии, что я получаю только 50-100 строк текста за раз (обычно), я пришел к выводу, что я всегда должен его использовать, но я должен явно вызовите его для каждого запроса. Мне это кажется странным. Я говорю это, потому что это указывает на то, что я что-то неправильно понял.Использовать mysqli_store_result по умолчанию
Насколько я понимаю; если вы прочитали 100 строк и используете while ($stmt->fetch())
, вы фактически отправляете 100 запросов read-next-to MySQL по сети (предполагая, что сеть и БД находятся на разных машинах). Если вы используете mysqli_store_result
, вы отправляете только один запрос и зацикливаете результирующий набор на веб-сервере. Почему я не всегда так делаю? Что мне не хватает?
И подзапрос: Имеет ли это какое-то отношение к моей переменной статуса MySQL, «handler read next» является очень высокой, и будет хранить help_result?
imo, я не уверен насчет части «по сети» вашего вопроса. Скрипт PHP работает на сервере, что база данных находится в обычном режиме. Я подозреваю, что сетевые накладные расходы между PHP и движком базы данных незначительны. Т.е. я склонен думать о 100 выборках как о медленных вызовах функций. Кроме того, данные будут также буферизованы механизмом базы данных. Поэтому для сбора данных не требуется много работы для обеих сторон. –
PHP-скрипт работает на веб-сервере, а не на сервере базы данных. Обычно это один и тот же хост, если приложение не масштабируется до любого примечательного размера. Я сделал несколько простых тестов и не могу измерить разницу между сохранением результата или нет, поэтому, возможно, я должен просто оставить это в покое. Теперь я просто не вижу, какую цель он служит. – nickdnk
точка, взятая о больших базах данных –