gpt4 book ai didi

MYSQL:创建表中的索引关键字以及何时使用它

转载 作者:IT老高 更新时间:2023-10-28 12:57:50 27 4
gpt4 key购买 nike

index 关键字是什么意思,它的作用是什么?我知道这是为了加快查询速度,但我不太确定如何做到这一点。

什么时候选择要索引的列?

index 关键字使用示例如下所示,在 create table 查询中:

CREATE TABLE `blog_comment`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`blog_post_id` INTEGER,
`author` VARCHAR(255),
`email` VARCHAR(255),
`body` TEXT,
`created_at` DATETIME,
PRIMARY KEY (`id`),
INDEX `blog_comment_FI_1` (`blog_post_id`),
CONSTRAINT `blog_comment_FK_1`
FOREIGN KEY (`blog_post_id`)
REFERENCES `blog_post` (`id`)
)Type=MyISAM

;

最佳答案

我建议阅读 How MySQL Uses Indexes来自 MySQL Reference Manual .它指出使用了索引...

  • 快速找到与 WHERE 子句匹配的行。
  • 从考虑中排除行。
  • 在执行连接时从其他表中检索行。
  • 查找特定索引列的 MIN()MAX() 值。
  • 对表格进行排序或分组(在特定条件下)。
  • 仅使用索引优化查询而不引用数据行。

数据库中的索引就像书中的索引一样工作。您可以更快地在一本书中找到您要查找的内容,因为索引是按字母顺序列出的。 MySQL 使用 B-trees 而不是字母列表组织它的索引,这对于它的目的来说更快(但对人类来说需要更长的时间)。

使用更多索引意味着占用更多空间(以及维护索引的开销),因此只有在满足上述使用条件的列上才真正值得使用索引。

在您的示例中,idblog_post_id 列都使用索引(PRIMARY KEY 也是索引),以便应用程序可以找到他们更快。在 id 的情况下,很可能这允许用户快速修改或删除评论,而在 blog_post_id 的情况下,应用程序可以快速找到所有评论对于给定的帖子。

您会注意到 email 列没有索引。这意味着通过特定电子邮件地址搜索所有博客文章可能需要相当长的时间。如果您想要添加通过特定电子邮件地址搜索所有评论的内容,那么也可以为其添加索引。

关于MYSQL:创建表中的索引关键字以及何时使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com