2

我第一次使用 MySQL 制作更大的数据库。由于它将变得更大,因此我需要更好的查询性能。所以我研究了索引。因为这是我学到的,所以我总是创建一个名为 id 的列,它会自动递增并用作主索引。

经过一番搜索和阅读,我想我已经了解了一些关于索引的事情,但我想确定一下。

当您使用带有例如 WHERE 子句的选择查询时,索引很有用,因为它不是搜索整个表,而是只搜索较小的部分。您应该索引在 WHERE 和 JOIN 子句中使用的内容。

只在 phpMyAdmin 中为要索引的列添加索引是否足够好,或者在执行选择查询时我必须做些什么?

4

3 回答 3

2

您不需要对 SELECT 语句进行任何更改。MySQL 会在可能的情况下自动使用索引进行查找。

所以是的,通过 phpMyAdmin 添加索引就足够了。

要查看实际情况,一旦您创建了索引,请尝试运行以 EXPLAIN 为前缀的 SELECT 查询。MySQL 会告诉你正在使用哪些索引。

于 2012-07-13T20:44:26.757 回答
1

您确实可以在where子句中使用索引,但通常您不知道要搜索哪些索引,而是搜索更有意义的数据,例如姓名、电子邮件地址、日期等。

当您连接表时,使用索引的力量就会出现,无论是为了搜索性能还是为了数据库的大小。想象一下,如果您有一个包含员工的数据库,并且您想跟踪他们所属的办公室。每个员工只有一张表,将有一个包含办公室名称的字符字符串,即“阿尔伯克基总部”。字符字符串占用大量空间并且搜索速度很慢。

相反,设计有两个表和索引的员工表只需要为每个员工存储一个 int(另一个表的索引)。第二张表跟踪所有办公室。当数据记录的数量增加时,整个数据库变得更小。这种方法也更容易维护,并且在各个方面都更好。

无论哪种方式 - 你永远不会出错的索引,你也可以在你将创建的每个表中添加一个(我相信有人可能不同意这个说法,但通常我会说你应该去做)。

于 2012-07-13T20:50:01.890 回答
1

只需添加索引。如果可能,数据库引擎将使用它。要查看数据库引擎是否使用它,您可以explain在查询之前添加一个,它将输出它的作用。例子:

explain select * from your_table
于 2012-07-13T20:46:27.757 回答