с базой данных mysql с innodb, и я хочу найти самый быстрый способ проверить, существует ли строка.SQL Performance - SELECT COUNT vs SELECT id с LIMIT 1
Так это быстрее сделать:
$sql5 = "SELECT id, value FROM pc_taxes WHERE id = :taxId AND client_id = :clientID LIMIT 1";
$stmt5 = getaccessdata::getInstance()->prepare($sql5);
$stmt5->bindValue(':clientID', $client_id, PDO::PARAM_INT);
$stmt5->bindValue(':taxId', $taxID, PDO::PARAM_INT);
try {
$stmt5->execute();
$req5 = $stmt5->fetchAll(PDO::FETCH_ASSOC);
$countTaxVal = 0;
foreach ($req5 as $r5) {
$countTaxVal++;
}
} catch (Exception $e) {
}
if($countTaxVal>0){
$rowExist=true;
}
или эта версия быстрее на очень больших записей:
$sql5 = "SELECT COUNT(*) FROM pc_taxes WHERE id = :taxId AND client_id = :clientID LIMIT 1";
$stmt5 = getaccessdata::getInstance()->prepare($sql5);
$stmt5->bindValue(':clientID', $client_id, PDO::PARAM_INT);
$stmt5->bindValue(':taxId', $taxID, PDO::PARAM_INT);
numRows =0;
try {
$stmt5->execute();
$numRows = $stmt5->fetchColumn();
} catch (Exception $e) {
}
if($numRows >0){
$rowExist=true;
}
Спасибо за ваши советы.
Я уже искал, но не нашел SELECT COUNT с LIMIT 1 ... –
count с лимитом на самом деле не имеет смысла ... –
Думал, что прекратится отсчет, если будет найден один ряд? Таким образом, он учитывает все записи и выводит только один? –