Mysql 如何在具有索引的列上插入/更新/删除?

Mysql 如何在具有索引的列上插入/更新/删除?,mysql,indexing,Mysql,Indexing,为了提高速度,我不得不在多个表中对一些单元格进行索引 现在,我应该如何更改我的插入/更新/删除等查询,以确保索引工作 我到底应该做什么?如果我不做任何特别的事情会发生什么 我是否应该每小时自动为列重新编制索引?MySQL RDBMS将为您处理索引DELETEs、INSERTs和UPDATEs将修改索引,而无需您执行任何操作。无需对它们重新编制索引。数据库将使您的索引保持最新 您不需要更改查询。RDBMS将决定何时使用索引 要确保RDBMS在您的SELECT/UPDATE查询中使用索引(对于更新查

为了提高速度,我不得不在多个表中对一些单元格进行索引

现在,我应该如何更改我的插入/更新/删除等查询,以确保索引工作

我到底应该做什么?如果我不做任何特别的事情会发生什么


我是否应该每小时自动为列重新编制索引?

MySQL RDBMS将为您处理索引
DELETE
s、
INSERT
s和
UPDATE
s将修改索引,而无需您执行任何操作。无需对它们重新编制索引。

数据库将使您的索引保持最新

您不需要更改查询。RDBMS将决定何时使用索引

要确保RDBMS在您的
SELECT
/
UPDATE
查询中使用索引(对于更新查询,只需将WHERE子句放在
SELECT
For
EXPLAIN

我的测试代码: 差异42秒和2分钟

mysql> UPDATE  big_table SET id = INSERT(id,1,5,'');
Query OK, 2835999 rows affected (42.69 sec)
Rows matched: 2835999  Changed: 2835999  Warnings: 0

mysql> ALTER TABLE big_table ADD INDEX id(id);
Query OK, 2835999 rows affected (5.75 sec)
Records: 2835999  Duplicates: 0  Warnings: 0

mysql> UPDATE  big_table SET id = INSERT(id,1,4,'');
Query OK, 2835999 rows affected, 2856 warnings (2 min 1.49 sec)
Rows matched: 2835999  Changed: 2835999  Warnings: 2856

如果您想检查
UPDATE t SET是否。。。其中s
语句使用的是索引execute
EXPLAIN SELECT*FROM t,其中s
或类似内容。