Порядок выборки по индексированным полям

Ashotovich

Новичок
Порядок выборки по индексированным полям

Всем доброго времени суток.
У меня следующий вопрос.
Есть некая таблица, в которой некоторые поля проиндексированы. Как в PHP реализовать порядок выборки по этим полям? Подозреваю, что просто выбором порядка расстановки переменных для WHERE в запросе, вроде так:
PHP:
$query="SELECT * FROM TABLENAME WHERE COLUMNAME1='$var1' AND  COLUMNAME2='$var2' AND COLUMNAME3='$var3'";
, то есть изменяя порядок перечисления в запросе var1, var2 и var3. Прав ли я?
Заранее благодарю за помощь.
 

Апельсин

Оранжевое создание
не очень понимаю суть запроса.
Что значит порядок выборки? От того что вы в данном вопросе поменяете местами COLUMNAME, результат выборки не измениться.
 

Ashotovich

Новичок
Результат не изменится. Но скорость его получения изменится. Если по переменной var1 отметается половина таблицы, а по var2 - три четверти, а var3 вообще соответствует одно значение в таблице, то поиск искомой строки по var3 будет осуществлятьзя вообще за 1 шаг - моментом. Вот я и спрашиваю - при обращении к MySQL имеет ли значение порядок переменных в запросе, или MySQL сам решает по какой переменной ему искать?
 

Апельсин

Оранжевое создание
> Вот я и спрашиваю - при обращении к MySQL имеет ли значение порядок переменных в запросе, или MySQL сам решает по какой переменной ему искать?

в твоем запросе лучше вообще создать составной индекс на все три поля - он тут в самый раз.
если существует несколько возможных для данного запроса индексов, то, теоретически, оптимизатор выбирает тот, который подходит более всего, практически - оптимизатор может и ошибиться.
 

Ashotovich

Новичок
Составной индекс? Дело в том, что к таблице обращается несколько разных запросов (порядка десяти). Что же теперь, создавать индексы для каждого набора столбцов из запросов?
 

Ashotovich

Новичок
Дык если полей десять и вариантов наборов - тоже, не все ли равно для чего индексы делать - для отдельных полей или для наборов?
 

Апельсин

Оранжевое создание
> не все ли равно для чего индексы делать - для отдельных полей или для наборов?

нет, не все равно. MySQL может использовать только 1 индекс на логическую таблицу.
 

Ashotovich

Новичок
А можно поподробнее? Что имеется в виду под "логической таблицей" и почему ПХП может использовать только 1 индекс?
 

Ashotovich

Новичок
Ну да, MySQL. Очепятка. Дык все равно вопрос остался - почему? И что такое логическая таблица.
 
Сверху