MySQL - 索引问题

时间:2012-07-13 20:42:12

标签: mysql indexing

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

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

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

在您要索引的列上添加phpMyAdmin中的索引是否足够好,或者在执行选择查询时是否必须执行某些操作?

3 个答案:

答案 0 :(得分:2)

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

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

要查看此操作,请在创建索引后尝试运行以EXPLAIN为前缀的SELECT查询。 MySQL会告诉你正在使用哪些索引。

答案 1 :(得分:1)

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

explain select * from your_table

答案 2 :(得分:1)

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

当您连接表时,无论是为了搜索的性能还是数据库的大小,都会使用索引。想象一下,如果您有一个员工数据库,并且您想跟踪他们所属的办公室。每个员工只有一个表,其中包含一个包含办公室名称的字符串,即“Albuquerque Headquarters”。字符串占用了大量空间,搜索速度很慢。

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

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