mysql - mysql索引是否在更新时修改?

标签 mysql database performance

假设我有一个 mysql 数据库表 'article',其中包含以下字段:idtitleurlviews

我的字段 title 标有 FULLTEXT 索引,字段 url 标有 UNIQUE 索引.

我的问题是,如果我做一个像这样的普通更新:

UPDATE 'article' SET views = views + 1 WHERE id = {id} 

...这会导致更新 mysql 表索引吗?

将字段 views 保留在表 article 中是否安全(从速度的角度来看),或者我应该创建一个单独的表,比方说,article_stats 包含以下字段:article_idviews ?

最佳答案

是的,UPDATE 语句更新索引。 MySQL 自动管理索引——您无需担心手动更新它们或触发更新。如果您询问那个特定的 UPDATE 是否会更改不包括 views 列的索引 - 不,它不会。仅更新相关索引。

保留 views 列很好,除非您需要跟踪有关每个 View 的额外信息(发生时间、创建 View 的用户等)

但是,您的 SQL 确实包含语法错误。您不能引用像 'article' 这样的表名。如果你需要引用一个表名(例如,如果它包含一个 SQL 保留字),那么使用这样的反引号:

UPDATE  `article` SET ...

关于mysql - mysql索引是否在更新时修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081564/

相关文章:

mysql - TDataset 和 TMemDataset

mysql - sql语句复杂条件 "join"

mysql - 如何根据当前时间段更新MySQL中的日期?

php - 如何根据所选日期获取自动编号

php - 如果 mysql 数据库中的数据发生变化,如何触发 AJAX

mysql - 将 MySQL 子查询的结果保存到 TEMPORARY TABLE 中的开销(而不是复制子查询)?

javascript - Jquery表单提交没有被触发

mysql - MS Access 和 MySQL 之间的 SQL 查询差异

database - 用户事件数据的理想数据存储?

linux - 了解 CentOS 7 上的性能结果