|
|
|
Как работает индекс?
|
|||
|---|---|---|---|
|
#18+
Уважаемые знатоки, искал как работает индекс и нашел интересные вещи, для примера если я делаю запрос на два поля то индекс работает по первому запросу а второй запрос работает перебором пропуская индексы даже если существуют индивидуальные. Все пишут что при запросе на два поля нужно делать комбинированный индекс то есть на два поля тогда запрос будет просто летать. Теперь вопрос если я делаю запрос на три поля а у меня индекс на два будет ли работать комбинированный индекс из двух полей для трех? И нужно ли мне делать индекс на три поля? Или это решается только практическим методом? Извиняюсь если что-то не внятно сказал, я не волшебник я только учусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 19:45:38 |
|
||
|
Как работает индекс?
|
|||
|---|---|---|---|
|
#18+
alexnews, "если я делаю запрос на три поля а у меня индекс на два будет ли работать комбинированный индекс из двух полей для трех?" будет "И нужно ли мне делать индекс на три поля?" единого ответа нет, т.к. в таком подходе есть и плюсы и минусы. Надо смотреть по ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2014, 22:55:04 |
|
||
|
Как работает индекс?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2014, 11:00:47 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38698699&tid=1834496]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 320ms |

| 0 / 0 |
