繁体   English   中英

MySQL-索引问题

[英]MySQL - Indexing questions

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

经过一些搜索和阅读,我认为我已经了解了一些有关索引编制的知识,但是我想确定一下。

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

仅在要索引的列上的phpMyAdmin中添加索引就足够了,还是在执行选择查询时必须做一些事情?

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

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

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

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

explain select * from your_table

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

联接表时,使用索引的强大功能在于提高搜索性能和数据库大小。 想象一下,如果您有一个包含员工的数据库,并且想跟踪他们所属的办公室。 每个员工只有一张桌子,将有一个包含办公室名称的字符字符串,即“阿尔伯克基总部”。 字符字符串占用大量空间,搜索速度很慢。

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

无论哪种方式-索引都不会出错,也可以在要创建的每个表中添加一个索引(我确信有人可能会不同意此语句,但是通常我会说你应该去做它) )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM