Я пытаюсь определить, в каких ситуациях MySQL обновляет индекс. Скажем, у меня есть следующая таблица:Когда 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 достаточно умным, чтобы это определить? Или просто сделав эту часть отчета об обновлении, я говорю MySQL, что, возможно, что-то изменилось, и он должен выполнить работу по обновлению индекса?
Итак, я просто изменил обновление на «UPDATE MyTable SET MyIndexedColumn = 'MyTestValue', MyNonIndexedColumn = 'Новое значение' WHERE ID = 1;" Это изменяет ваш ответ? – 2008-11-12 15:57:11