Я хочу использовать pdo в своем приложении, но перед этим хочу понять, как внутри
PDOStatement->fetch
и PDOStatement->fetchAll
.
Для моего приложения я хочу сделать что-то вроде "SELECT * FROM myTable" и вставить в файл csv, и он содержит около 90000 строк данных.
Мой вопрос: если я использую PDOStatement->fetch
, поскольку я использую его здесь:
// First, prepare the statement, using placeholders
$query = "SELECT * FROM tableName";
$stmt = $this->connection->prepare($query);
// Execute the statement
$stmt->execute();
var_dump($stmt->fetch(PDO::FETCH_ASSOC));
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo "Hi";
// Export every row to a file
fputcsv($data, $row);
}
Будет ли после каждой выборки из базы данных результат для этой выборки будет храниться в памяти?
Значение, когда я делаю вторую выборку, в памяти будут данные первой выборки, а также данные для второй выборки.
Итак, если у меня есть 90000 строк данных, и если я делаю выборку каждый раз, когда память обновляется, чтобы получить новый результат выборки, не удаляя результаты предыдущей выборки, и поэтому для последней памяти выборки уже будет иметь 89999 строк данных.
- Это как
PDOStatement::fetch
работает? - Производительность, как этот стек
против
PDOStatement::fetchAll
?
Обновление: что-то о fetch и fetchAll из точки использования памяти
Просто хотел добавить кое-что к этому вопросу, так как недавно нашел что-то в отношении fetch и fetchAll, надеюсь, что это поставит вопрос в будущее, потому что люди будут посещать этот вопрос в будущем, чтобы получить некоторое представление о параметрах fetch и fetchAll.
fetch не хранит информацию в памяти, и она работает на основе строки на строку, поэтому она будет проходить через результирующий набор и возвращать строку 1, чем снова будет идти в результирующий набор, а затем снова возвращать строку 2, не будет возвращать строку 1, а также 2, но только вернет строку 2, поэтому выборка не будет хранить что-либо в памяти, но fetchAll будет хранить детали в памяти. Таким образом, выборка лучше по сравнению с fetchAll, если мы имеем дело с результирующим набором размером около 100 КБ.