Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как работает индекс? / 3 сообщений из 3, страница 1 из 1
16.07.2014, 19:45:38
    #38698325
alexnews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает индекс?
Уважаемые знатоки, искал как работает индекс и нашел интересные вещи, для примера если я делаю запрос на два поля то индекс работает по первому запросу а второй запрос работает перебором пропуская индексы даже если существуют индивидуальные. Все пишут что при запросе на два поля нужно делать комбинированный индекс то есть на два поля тогда запрос будет просто летать.
Теперь вопрос если я делаю запрос на три поля а у меня индекс на два будет ли работать комбинированный индекс из двух полей для трех? И нужно ли мне делать индекс на три поля? Или это решается только практическим методом?

Извиняюсь если что-то не внятно сказал, я не волшебник я только учусь.
...
Рейтинг: 0 / 0
16.07.2014, 22:55:04
    #38698436
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает индекс?
alexnews,

"если я делаю запрос на три поля а у меня индекс на два будет ли работать комбинированный индекс из двух полей для трех?"
будет

"И нужно ли мне делать индекс на три поля?"
единого ответа нет, т.к. в таком подходе есть и плюсы и минусы. Надо смотреть по ситуации.
...
Рейтинг: 0 / 0
17.07.2014, 11:00:47
    #38698699
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как работает индекс?
alexnewsУважаемые знатоки, искал как работает индекс и нашел интересные вещи, для примера если я делаю запрос на два поля то индекс работает по первому запросу а второй запрос работает перебором пропуская индексы даже если существуют индивидуальные. Все пишут что при запросе на два поля нужно делать комбинированный индекс то есть на два поля тогда запрос будет просто летать.
Теперь вопрос если я делаю запрос на три поля а у меня индекс на два будет ли работать комбинированный индекс из двух полей для трех? И нужно ли мне делать индекс на три поля? Или это решается только практическим методом?

Извиняюсь если что-то не внятно сказал, я не волшебник я только учусь.

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

1)на одну таблицу может примениться только один индекс(быть может несколько, но применён один)
2)что такое составной индекс.
для простоты - предположим что у нас есть два типа данных. числа в две цифры
00 - 99
и тип данных число в одну цифру 0-9

- тогда индекс на поле первого типа(назовём поле П0) - будет чтото вроде

00-список первичных ключей, где значение этого поля 00
01 -...
....
99

а второй индекс сделаем на два поля П1 и П2 , но они у нас уже второго типа - одноциферное число.

так вот этот индекс получиться тем же самым
00 - список первичных ключей, где П1 =0, п2=0
01 - п1=0 п2=0 список ПК.
...

========
запрос
найти всё где П0=12, приведёт к тому. что прочитаеться первый идекс, найдём список записей где оно 12, и всё.

второй запрос - где П1=1 и П2=3
....в индексе найдём участо 13, и прочитаем список первичных ключей

третий запрос
найти где П1 = 4
это тоже самое что П1=4 И (П2 от 0 до 9)
тоесть найти все записи, где составной индекс имеет значения от 40 до 49

запрос 4
где П0 между 40 и 49
идентично запросу три, только используеться первый индекс

запрос 5

найти где П0 = 1 П1=2 П2 =3
оптимизатор выберет один из индексов и

-либо по индексу найдёт где п0=1, потом их перебёрёт на проверку двух других полей
-либо по индекску найдёт где П1=2 П2 =3, и перебирая записи найдёные, отсеит чтобы выполнялось п0=1
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как работает индекс? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]