Контекст всегда важен, например size и сложность массива. Для небольших и средних списков несколько ответов, размещенных здесь, просто прекрасны, хотя некоторые разъяснения должны быть сделаны:
text()
. Для получения дополнительной информации (например, анализа производительности) при использовании XML для разбиения списков проверьте «Использование XML для передачи списков в качестве параметров в SQL Server » Phil Factor. DataTable
означает дублирование данных в памяти, поскольку они копируются из исходной коллекции. Следовательно, используя DataTable
меня что передача в ТВП не работает хорошо для больших наборов данных (т. е. не очень хорошо масштабируется). DataTable
TVP, XML не масштабируется, так как он более чем удваивает объем данных в памяти, поскольку ему необходимо дополнительно учитывать накладные расходы XML-документа. При всем том, что, если данные, которые вы используете, являются большими или не очень большими, но постоянно растут, то метод IEnumerable
TVP является лучшим выбором, поскольку он передает данные на SQL Server (например, метод DataTable
), НО не требует дублирования коллекции в памяти (в отличие от любого другого метода). В этом ответе я привел пример кода SQL и C #:
mysqli_result :: fetch_all () требует MySQL Native Driver (mysqlnd).
blockquote>вероятность того, что вам может быть не хватать.
посмотреть это сообщения, которые могут вам помочь.
http://www.php.net/manual/en/mysqli-result.fetch-all.php
Доступно только с mysqlnd.
blockquote>Заметки о включении
mysqlnd
: http://www.php.net/manual/en/mysqlnd.install.php
fetch_all потребляет больше памяти, чем fetch_array (), и имеет другие побочные эффекты, поэтому fetch_array / fetch_assoc являются предпочтительными.
Подробно из документации PHP:
Доступно только с mysqlnd.
Поскольку mysqli_fetch_all () возвращает все строки в виде массива за один шаг, он может потреблять больше памяти, чем некоторые аналогичные функции, такие как mysqli_fetch_array (), который возвращает только одну строку за раз из набора результатов. Кроме того, если вам нужно выполнить итерацию по набору результатов, вам понадобится конструкция цикла, которая будет еще больше влиять на производительность. По этим причинам mysqli_fetch_all () следует использовать только в тех ситуациях, когда полученный набор результатов будет отправлен на другой уровень для обработки.
blockquote>Если вы действительно хотите его использовать, вам необходимо установить mySQL с собственным приводом (mysqlnd) Пример установки:
./configure --with-mysql=mysqlnd \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \
На Ubuntu вы можете просто сделать
sudo apt-get install php5-mysqlnd