MySQL什么时候尝试更新列的索引?

前端之家收集整理的这篇文章主要介绍了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');

据我所知,这个查询会在MysqL中为B-Tree索引添加某种哈希键,用于值’MyTestValue’.

现在,如果我运行以下语句,即使我没有更改列的值,是否会强制更新B-Tree索引?

UPDATE MyTable SET MyIndexedColumn = 'MyTestValue',MyNonIndexedColumn = 'A New Value' WHERE ID = 1;

MysqL足够聪明,可以确定吗?或者只是将该列作为更新语句的一部分,我告诉MysqL可能已经发生了变化,它应该做更新索引的工作吗?

最佳答案
如果你在MysqL客户端运行该查询,你会看到类似的东西

Rows matches: 1,Rows Updated: 0

因此,MysqL肯定知道某行何时发生了变化 – 我从那里开始假设他们足够智能,不会从那里更新索引.

原文链接:https://www.f2er.com/mysql/434129.html

猜你在找的MySQL相关文章