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
ForEXPLAIN
)我的测试代码:
差异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
语句使用的是索引executeEXPLAIN SELECT*FROM t,其中s
或类似内容。