|
|
|
При каких условиях пересчитывается индекс
|
|||
|---|---|---|---|
|
#18+
Хи форумчане. Подскажите, плиз, кто в курсе. Ситуация: есть таблица, одно из полей проиндексировано. Будет-ли пересчитан индекс при выполнении запроса вида Код: sql 1. 1) поле по которому построен индекс в SET не указано 2) поле по которому построен индекс в SET указано, но новое значение рано старому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 01:16:34 |
|
||
|
При каких условиях пересчитывается индекс
|
|||
|---|---|---|---|
|
#18+
Dmitriy-CoDy, нет нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 01:37:16 |
|
||
|
При каких условиях пересчитывается индекс
|
|||
|---|---|---|---|
|
#18+
Изменение в индекс вносится только в случае фактического изменения значения поля, входящего в состав индекса. В обоих указанных случаях такого изменения нет. Хотя чисто теоретически во втором случае существует вероятность изменения. Например, поле имеет тип DOUBLE и содержит некое значение. Причём это значение отличается от того, которое было указано в запросе, за счёт неточного представления десятичных чисел в двоичном виде - т.е. записывали некое 1.1, а хранится какое-то 1.099999999999997 (взято от фонаря, просто для демонстрации сути). И в это поле записывается значение, взятое з другой таблицы, из поля типа FLOAT. В которое записывали точно такое же визуальное значение, но по той же самой причине там хранилось ДРУГОЕ неточное значение, некое 1.10000002 (тоже взято от фонаря). И хотя мы полагаем, что обновление происходит тем же значением, на самом деле значение изменяется - а индекс корректируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 09:21:13 |
|
||
|
При каких условиях пересчитывается индекс
|
|||
|---|---|---|---|
|
#18+
retvizanDmitriy-CoDy, нет нет Есть однако нюансы... 1) InnoDb - версионник, и при каждом изменении он создаёт новую версию старой записи. При этом, поскольку первичный ключ всегда кластерный, то он меняется -- там появляется новая запись с тем же значением первичного ключа, но со следующей версией записи в конце. Также должны промодифицироваться вторичные индексы -- туда должны быть добавлены новые записи со ссылкой на новую запись в PK ( c новой версией). 2) Если меняется поле не из данного индекса, но из PK, то все индексы также должны быть изменены, чтобы поменять там ссылку на PK со старого значения на новое. (впрочем, это вариация пункта 1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2015, 12:32:35 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39083349&tid=1832587]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 393ms |

| 0 / 0 |
