如何在索引列上插入/更新/删除?

时间:2011-09-20 22:58:38

标签: mysql indexing

我必须将多个表中的一些单元格索引以提高速度。

现在我应该如何更改插入/更新/删除等查询以确保索引有效?

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

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

3 个答案:

答案 0 :(得分:2)

MySQL RDBMS将为您处理索引。 DELETE s,INSERTUPDATE将修改索引,而不会执行任何操作。不应该重新索引它们。

答案 1 :(得分:0)

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

您无需更改查询。 RDBMS将确定何时使用索引。

要确保RDBMS使用SELECT / UPDATE个查询中的索引,请使用EXPLAIN(对于UPDATE查询,只需将{WHER]子句放到SELECT EXPLAIN })

答案 2 :(得分:0)

我的测试代码:  差异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