$items = array('A', 'B', 'C', 'D'); /* Database contains any letters between A..Z. Could contain none, all, or any combination of letters, no duplication */ // Is it more efficient to: foreach ($items as $item) { $sql = "SELECT 1 FROM letters WHERE letter = $item"; $result_set = $dbObj->execute_query($sql); if (!$dbObj->get_num_rows($result_set)) { // item is not in the database // ... } } // ... or ... $sql = "SELECT letter FROM letters"; $result_set = $dbObj->execute_query($sql); $item_array = $dbObj->get_row_array($result_set); foreach ($items as $item) { if (!in_array($item, $item_array)) { // item is not in database // ... } }