1. Составной индекс, например: col1_col2_col3 (индекс составлен так что бы столбцы стояли по избирательности)
2. Нужно ли в запросе состоящим из трех where выставлять их в том же порядке что и столбцы в индексах?) типа SELECT * FROM table WHERE col1=1 AND col2=2 AND col3=3
или порядок в условии не имеет значения? SELECT * FROM table WHERE col2=2 AND col1=1 AND col3=3 ?
А как называются столбцы?
да в примере я указал col1 col2 col3
это отвлеченный пример)) просто есть два мнения у меня и коллеги) интересно кто прав)
Вообще в WHERE порядок важен. А почему бы тебе не посмотреть в плане запроса?
Вопрос возник сейчас, а я с телефона.
Просто индекс может и не быть использованным
Я хз. Надо тестить это
В чате postgree ребята сказали что порядок where в запросе не важен, субд сама поймет как индекс использовать. Вполне может быть что в mysq по другому.
Думаю что они ошибаются. А если я хочу чтобы она работала, вынимая записи именно в моём порядке?
Так от перестановки where результат не должен поменяться вроде.
первый фильтр отсекает половину записей, второй ищет в половине или первый фильтр оставляет сотую часть записей, второй ищет по сотой части
И почему ты так думаешь? Если у тебя индекс A, B и в where указать B, A, то порядок не важен.
А если у меня 2 индекса A B и B A?
это лишнее, так не надо делать
Это уже другой вопрос
Это верно
Так оно само поймёт порядок или не будет использовать индекс?
Само поймет, сейчас приложу скриншоты.
DDL и план запроса пожалуйста тоже
Обязательно!
Эксплейн показывает что пофиг
МОжно два вопроса тебе задать?
1) какое у тебя образование ? 2) на основании каких соображений ты решил, что в запросе, имеющем в WHERE три логических терма, необходимо выставлять их в том же порядке что и столбцы в индексах? Почему ты решил, что от порядка условий что-то должно зависеть? SELECT * FROM table WHERE col1=1 AND col2=2 AND col3=3 SELECT * FROM table WHERE col2=2 AND col1=1 AND col3=3
2) Но если бы индекса не было, то зависело бы
Ну, расскажи, почему...
1. Образование не ИТ 2. Насчет порядка не я решил а коллега)) я никогда и не думал что это важно) он про это сказал - я решил проверить)
(1) можно конкретнее ? Извини за любопытство.
1) У меня нету высшего. Никакого
1. Обработка материалов на станках с ЧПУ и автоматических линиях 2. Менеджмент и экономика городского хозяйства (ХНУГХ)
(2) - можешь, пожалуйста, выспросить у коллеги, на основании чего у него возникли такие мысли. Это важно для меня, я хочу понять, как люди могут думать про эти вещи. Нужно для обучения других людей.
Спасибо!
это было логический вывод)) типа сначала ищет по первой части индекса, дальше ищет по второй и в конце по третьей)) если поменять местами то mysql вдруг не найдет нужны индекс)) как то так..
SELECT * FROM table WHERE col2=2 AND (col1=1 AND col3=3) а если так то какая логика будет?
я не знаю)) я вообще никогда про порядок не задумывался)
Походу порядок можно поменять только через вложенные запросы
Выполнения фильтраций
Обсуждают сегодня