加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-11 23:44:00 所属栏目:MySql教程 来源:网络整理
导读:我正在尝试确定MySQL更新索引的情况.说我有下表: CREATE TABLE MyTable ( ID INT NOT NULL AUTO_INCREMENT,MyIndexedColumn VARCHAR NOT NULL,MyNonIndexedColumn VARCHAR,PRIMARY KEY (ID),INDEX MyNewIndex(MyIndexedColumn)) 然后我运行以下SQL来插入一

我正在尝试确定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肯定知道某行何时发生了变化 – 我从那里开始假设他们足够智能,不会从那里更新索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读