2011-03-11 121 views
2

我有一個mysql表,我想檢查一行是否存在,其中columnA = $ a和$ columnB = $ b。我不需要從那裏選擇任何東西。什麼應該是有效的查詢呢?目前Im做一樣,PHP的mysqli查詢來檢查行是否存在

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); 

回答

7

嘗試這樣的:

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); 

現在,你應該能夠把它做

3

,如果你想提高該查詢,你應該選擇一列只有加快查詢也就是說高效的查詢。

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

從行中選擇一個字段而不是全部(*)。即使你沒有使用它們,mysql仍然必須從存儲中獲取它們並讓它們準備好傳輸。

SELECT columnA FROM table WHERE ... 

否則有沒有什麼別的可以做,以改善的事情,不是把指標上columnA和columnB使搜索更快等。