我想確定什麼情況下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樹索引在MySQL中爲值'MyTestValue'。
現在,如果我運行以下語句,是否會強制要更新B-Tree索引,即使我沒有更改列的值?
UPDATE MyTable SET MyIndexedColumn = 'MyTestValue',
MyNonIndexedColumn = 'A New Value' WHERE ID = 1;
MySQL是否足夠聰明地確定?或者只是將該列作爲更新語句的一部分,我是否告訴MySQL可能有某些更改,並且它應該執行更新索引的工作?
好的,所以我只是將更新更改爲「更新MyTable SET MyIndexedColumn ='MyTestValue',MyNonIndexedColumn ='新值'WHERE ID = 1;」這會改變你的答案嗎? – 2008-11-12 15:57:11