Я пытаюсь определить, в каких ситуациях MySQL обновляет индекс. Скажем, у меня есть следующая таблица:
CREATE TABLE MyTable (
ID INT NOT NULL AUTO_INCREMENT,
MyIndexedColumn VARCHAR NOT NULL,
MyNonIndexedColumn VARCHAR,
PRIMARY KEY (ID),
INDEX MyNewIndex(MyIndexedColumn)
)
Затем я запускаю следующий SQL для вставки строки:
INSERT INTO MyTable (MyIndexedColumn, MyNonIndexedColumn)
VALUES ('MyTestValue', 'MyTestValue');
Я понимаю, что этот запрос добавит некоторый хэш-ключ к индексу B-Tree в MySQL для значения 'MyTestValue'.
Теперь, если я выполню следующее утверждение, заставит ли это индекс B-Tree обновиться, даже если я не изменил значение столбца?
UPDATE MyTable SET MyIndexedColumn = 'MyTestValue',
MyNonIndexedColumn = 'A New Value' WHERE ID = 1;
Достаточно ли умен MySQL, чтобы это определить? Или, просто сделав этот столбец частью оператора update, я сообщаю MySQL, что, возможно, что-то изменилось, и он должен выполнить работу по обновлению индекса?