我有一个MyISAM MySQL表中有三列 - 一个自动递增的ID,一个整数(客户ID)和一个小数(账户余额)。索引是否有意义加快UPDATE的使用?
在这个时候,每当我初始化我的系统,我彻底清除使用表:
truncate table xyz;
alter table xyz auto_increment=1001;
然后我重新填充与PHP的数据表。我通常最终在该表中有10,000个条目。
但是,由于系统的新要求,我现在还需要在系统运行时更新表,因此我无法再擦除表并必须使用UPDATE
而不是INSERT
,并更新了平衡一个接一个,比我现在要做的每次插入20个新记录要慢得多。
PHP只将客户ID和金额发送给MySQL - 其他ID实际上未使用。
所以我的问题是这样的: 为了加快更新,将索引放在客户ID上是否有意义,因为来自PHP的输入最有可能不会按顺序排列?或者是否会添加指数使其降低到足以使其不值得?
我也不知道,如果指数在所有用于UPDATE
命令或不...
就如何加快这没有其他的建议?
指数将使用,因为你将不得不使用'WHERE'语句更新一行。任何时候你用'WHERE'进行搜索都会使用索引。 MySQL必须找到该行,然后进行更新。 – Pitchinnate
@Pitchinnate谢谢,这回答了我的问题的部分:-)我是自学成才的,并且使用'JOIN'很多,并且知道索引在这里有很多帮助,但不知道'WHERE',所以谢谢! – semmelbroesel
只是简单的学习使用MySQL中的'explain'功能,在处理索引和优化你的sql查询时,它会帮助你很多。 – Pitchinnate