MySQL-索引问题

MySQL-索引问题,mysql,indexing,Mysql,Indexing,我是第一次使用MySQL创建一个更大的数据库。因为它将是一个更大的查询,我需要更好的查询性能。所以我研究了索引。因为这是我学到的,所以我总是创建一个名为id的列,它是自动递增的,并用作主索引 经过一些搜索和阅读,我想我已经了解了一些关于索引的事情,但我想确定一下 当您将select查询与WHERE子句一起使用时,索引非常有用,因为它不是搜索整个表,而是搜索较小的部分。您应该为WHERE和JOIN子句中使用的内容编制索引 只需在phpMyAdmin中为要索引的列添加索引就足够了吗?还是在执行sel

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

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

当您将select查询与WHERE子句一起使用时,索引非常有用,因为它不是搜索整个表,而是搜索较小的部分。您应该为WHERE和JOIN子句中使用的内容编制索引


只需在phpMyAdmin中为要索引的列添加索引就足够了吗?还是在执行select查询时我必须做些什么

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

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


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

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

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


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

只需添加索引即可。如果可能,DB引擎将使用它。要查看DB引擎是否使用它,可以在查询之前添加一个解释,它将输出它的功能。例如:

explain select * from your_table

只需添加索引。如果可能,DB引擎将使用它。要查看DB引擎是否使用它,可以在查询之前添加一个解释,它将输出它的功能。例如:

explain select * from your_table

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

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

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


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

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

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

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

无论哪种方式,索引都不会出错,最好在创建的每个表中添加一个索引。我相信可能有人不同意这种说法,但通常我会说,你应该这样做