2

索引主要用于提高数据库查询的速度,最适合应用在表的主键上,但不一定总是如此。

我想知道应用索引并因此获得最佳结果的决策。

因为我对索引的了解不仅限于将其应用于主键,否则我会在什么情况下应用它

4

1 回答 1

2

尽管它们被广泛使用,但最好在语句的子句和子句index中经常使用的任何列上使用它们。WHEREORDER BY

以下表为例:

CREATE TABLE `people` (
    `id` int,
    `name` varchar(255),
    `phone` varchar(10),
    `state` varchar(50),
    `city` varchar(100),
    `zip` int
);

默认情况下,您可能只会在id列上有一个索引。现在,假设您的数据库中有 20k“人”。当通过 id 字段以外的任何字段进行搜索时,您可能会开始注意到一些滞后。这就是索引的用武之地。

您很有可能不会按字段进行搜索phone(可能,但不太可能),因此我们不会索引该字段。但是,按state/ city/搜索的zip可能性更大。当您按城市/州进行搜索时,您通常会同时使用WHERE类似以下的子句进行搜索:

WHERE state = 'Florida' AND city = 'Miami';

因为它们经常一起使用,所以您应该使用这两个字段创建一个索引(请参阅 参考资料multiple-column indexes)。另一方面,当您通过 搜索时zip,您通常会在没有附加城市/州的情况下进行搜索,例如:

WHERE zip = 12345;

这样,您将仅使用 zip 字段创建索引。

另外,值得注意的是,索引不仅占用空间,还需要在任何过程中INSERTUPDATE在与它们的表上进行修改。如果您有大量索引和大量INSERT记录,则可以开始注意到单个的时间。因此,请确保您确实需要索引将提供的额外性能提升,然后再添加它们(如盐 + 胡椒)。

于 2012-09-01T06:51:58.670 回答