Если значение @param равно нулю, что лучше использовать:Правильные Дополнительные параметры в MySQL
WHERE t.column = COALESCE(@param, '')
WHERE t.column = IFNULL(@param, '')
WHERE (@param IS NULL OR t.column = @param)
Является ИЛИ дороже сравнивая столбец со значением, которое будет возвращать все значения для указанного столбца? Мое понимание заключается в том, что опции 1 & 2 заставят сканирование полной таблицы каждый раз, а # 3 - нет.
Мой плохой - ISNULL изменен как IFNULL, спасибо. –
Почему вы полагаете, что вариант 3 выполнил бы полное сканирование таблицы, если @param должен был быть нулевым? Пройдет первая половина теста; вторая часть не должна выполняться. –
Я предполагаю, что это не совсем «сканирует» всю таблицу так, как возвращает всю вещь. Это то, что вы хотите? – eswald