创建和利用MySQL索引

时间:2015-08-11 02:24:42

标签: mysql asp.net indexing

我正在阅读有关MySQL索引的内容,但仍然有一些问题。

首先,我有一个带有MySQL InnoDB数据库的ASP.NET应用程序。我有一个名为userstable的表,其中包含以下列:last_namemiddle_namefirst_nameemail

如果我想根据姓氏创建索引,我可以创建索引:

CREATE INDEX last_name_index ON userstable (last_name);

现在我有以下查询来选择数据,我的问题是,是否必须修改此常规SQL查询以使用索引?如果是这样,怎么样?

SELECT * FROM userstable WHERE last_name="johnson"

此外,我还读到,如果您要在表中添加行,则必须更新索引,因为索引可能已过期。

这是否意味着我应该在表格中任意多次发出此命令CREATE INDEX last_name_index ON userstable (last_name);

1 个答案:

答案 0 :(得分:1)

SQL引擎自动使用索引。通常,优化器确定索引是否合适以及用于查询的索引(可能有多个索引适用)。

您的查询通常会使用索引。如果表只有少量行,则可能是一个例外。然后扫描表可能比索引查找更快。

至于保持索引是最新的,这也是自动完成的。你真的不必担心它。如果进行大量删除和更新,则索引(和表)的效率可能会低于从头创建的效率。这种现象称为索引碎片(并记录为here)。因此,在某些情况下,为了维护数据库并保持数据库清洁,您需要重建索引。但是,这种情况非常罕见,在您只是插入新值的表格中通常不需要。