首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -索引问题

MySQL -索引问题
EN

Stack Overflow用户
提问于 2012-07-14 04:42:12
回答 3查看 139关注 0票数 2

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

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-14 04:44:27

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2012-07-14 04:46:28

只要添加索引即可。如果可能,DB引擎将使用它。要查看DB引擎是否使用它,您可以在查询之前添加一个explain,它将输出它所做的事情。示例:

代码语言:javascript
复制
explain select * from your_table
票数 1
EN

Stack Overflow用户

发布于 2012-07-14 04:50:02

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11478074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档