2011-03-11 4 views
2

J'ai une table mysql, je veux vérifier si une ligne existe où columnA = $ a et $ columnB = $ b. Je n'ai pas besoin de sélectionner quoi que ce soit à partir de là. Quelle devrait être une requête efficace pour cela? Actuellement je fais comme,PHP mysqli requête pour vérifier si une ligne existe

if ($stmt = mysqli->prepare("SELECT * FROM TABLE WHERE columnA=? && columnB= ? LIMIT 1")) { 
    $stmt->bind_param("ss", $a, $b); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $count=$stmt->num_rows; 
    $stmt->close(); 
    } 
    return ($count > 0 ? true : false); 

Répondre

7

Essayez avec ceci:

if ($stmt = $mysqli->prepare("SELECT COUNT(*) FROM TABLE WHERE columnA=? && columnB=?")) { 
    $stmt->bind_param("ss", $a, $b); 
    $stmt->execute(); 
    $stmt->bind_result($count); 
    $stmt->fetch(); 
    $stmt->close(); 
} 

return ($count > 0 ? true : false); 

Maintenant, vous devriez être en mesure pour le faire

3

C'est une requête efficace si vous souhaitez améliorer cette requête, vous devez sélectionner une seule colonne pour accélérer la requête.

if ($stmt = mysqli->prepare("SELECT id FROM TABLE WHERE columnA=? && columnB= ? LIMIT 1")) { 
2

Sélectionnez un seul champ de la ligne au lieu de tous (*). Même si vous ne les utilisez pas, mysql doit toujours les récupérer et les préparer pour la transmission.

SELECT columnA FROM table WHERE ... 

Sinon, il n'y a pas grand chose que vous pouvez faire pour améliorer les choses, autres que de mettre des index sur COLUMNA et ColumnB pour faire aller plus vite la recherche.

Questions connexes