Есть ли разница в этих 2 запросах (с точки зрения оптимизации)?
select * from users;
и
select * from users where first_name like '%%' and last_name like '%%'
Я строю запрос в PHP динамически, используя переданные параметры.Так, например ..
$first_name_str = "";
if($firstname)
{
$first_name_str = "first_name = '%".$firstname."%' and";
}
$last_name_str = "";
if($lastname)
{
$last_name_str = "last_name = '%".$lastname."%' and";
}
$query =
"select
*
from
users
where
".$first_name_str."
".$last_name_str."
1=1";
Причина, по которой я спрашиваю это, состоит в том, что я прочитал, что mysql использует только один индекс при выполнении выбора.Итак, если у меня есть отдельные индексы по имени и фамилии, будет использоваться только один.В случае, если у меня есть запрос как:
select * from users where first_name like '%%' and last_name like '%%'
по умолчанию, я могу добавить объединенный индекс как для имени, так и для фамилии, и поиск будет намного быстрее?