mysql - 索引和删除语句

标签 mysql database rdbms ddl dml

我只想知道我有一个包含超过 1000 条记录的表,并且还有一些索引。我想从表中删除数据。如果我使用删除或截断,索引会发生什么情况。换句话说,如果我们使用任何这些语句,索引也会被删除。 谢谢

最佳答案

当您更改或删除表中的数据时,表结构不会受到影响。

要更改表结构本身,您必须完全删除表或使用特定命令(例如添加索引或列等)更改它。

索引是一种通过构建优化的数据映射来更快地获取记录的机制。如果记录发生更改,则必须重新生成 map ,或者您可以说进行更正。

因此,如果您删除记录,那么表的索引将不再正确,因为它与数据不匹配。因此,每次您更改表中的某些内容时,索引都会自动调整。

这就是索引使选择速度非常快的原因。但如果添加很多,则插入、更新和删除会变慢,因为这些操作需要更新索引。

但是索引定义没有改变 - 索引包含的数据发生了变化。和 table 上的一模一样。通过更改表的数据 - 您不会更改表的结构。

关于mysql - 索引和删除语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37321217/

相关文章:

MySQL 查询更新除最新行之外的所有 "duplicate"行

python - 在 Django 1.7 上使用表单和 View 更新模型字段

php - 如何从 JSON php 中删除额外的数组

mysql - MySQL 中的 ORDER BY 适用于 1 列,但不适用于 2 列

java - 无法从 SQLite 数据库中选择图像 (Android)

scalability - 写RDBMS缺陷时没有水平可扩展性?还是所有 DBMS 都会发生这种情况?

xml - 为什么我会选择在关系数据库中存储和操作 XML?

mysql - 如何在成功等待脚本后启动 docker 容器

PHP 数组与不同类型的键合并

mysql - 将托管服务器上的网站连接到我的本地主机 php mysql