我必须将多个表中的一些单元格索引以提高速度。
现在我应该如何更改插入/更新/删除等查询以确保索引有效?
我应该做什么以及如果我不做任何特别的事情会发生什么?
我应该每小时自动重新编制列索引吗?
答案 0 :(得分:2)
MySQL RDBMS将为您处理索引。 DELETE
s,INSERT
和UPDATE
将修改索引,而不会执行任何操作。不应该重新索引它们。
答案 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