Прежде всего, вы идете об этом неправильно. Вы не хотите выполнять предложение WHERE для столбца текстового типа, если можете избежать этого. Поскольку в вашей таблице персон в качестве внешнего ключа уже указан департамент_ид, вы захотите использовать это значение для выбора. Это означает, что вам придется изменить свой элемент select, чтобы он содержал идентификаторы отделов в качестве значений параметров.
<!-- Example -->
<select name="dept_id">
<option value="1">Sales</option>
<option value="2">Support</option>
<option value="3">Fulfillment</option>
</select>
Так что теперь не только простой выбор будет происходить быстрее, так как вы будете выполнять для индексированного столбца (вы сделали его правильным FK, чтобы он был проиндексирован, верно?), Но вы также полностью удалите соединение ! (что является еще одним повышением скорости запроса)
// Here is injection-safe code for the ODBC driver
$stmt = odbc_prepare( "SELECT * FROM person WHERE department_id = ?" );
$success = odbc_execute( $stmt, array( $_POST['dept_id'] ) );
// Here is the old, non-secure version, but is db-driver agnostic
$deptId = $_POST['dept_id']; // escape this please!
$query = "SELECT * FROM person WHERE department_id = $deptId";