PHP / PDO более эффективный метод строк? - PullRequest
1 голос
/ 07 сентября 2011

Все мои сайты построены на стеке php и mysql с использованием PDO.Мне хорошо известны различные способы узнать, сколько строк может вернуть конкретный запрос, но я не уверен, как определить, какой из них более эффективен.

Метод 1 - COUNT () в SQL

$stmt = $db->prepare('SELECT COUNT(ID) FROM table WHERE name = :name');
$stmt->bindParam(':name', $name);
$stmt->execute();

while($row = $stmt->fetch()) {
    $counter = $row[0];
}

в этом примере меня интересует ТОЛЬКО подсчет количества результатов по конкретному запросу.Запрос выполняется один раз, а результаты возвращаются в переменной $ counter.

Метод 2 - Foundrows

$stmt = $db->prepare('SELECT ID FROM table WHERE name = :name');
$stmt->bindParam(':name', $name);
$stmt->execute();

$counter= $db->query("SELECT FOUND_ROWS()")->fetchColumn();

Этот метод вызывает дополнительный вызов для моего исходного запроса.

Первый способ представляется наиболее «эффективным» с точки зрения выполнения только одного запроса к базе данных и поиска результата.Метод 2 дает дополнительное преимущество, позволяя мне получить набор результатов, а затем на основе количества этих результатов выбрать игнорировать или продолжить.Метод 2, однако, по-видимому, делает последующие вызовы, которые я предположил бы менее эффективными.

Любой опытный совет по этому поводу?

примечание: в этом примере меня ТОЛЬКО интересует, как эффективнее найти количество строк результатов.Приветствуется дополнительная информация о ваших дополнительных преимуществах, но это не главное.

1 Ответ

2 голосов
/ 07 сентября 2011

Метод 1 более эффективен.
Если id не является первичным ключом, замените count(id) на count(*) для дополнительной скорости (возможно, быстрее, никогда не медленнее) .
Если у вас нет индекса на name, добавьте его для скорости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...