如何编写mysql查询来解决这个问题?

如何编写mysql查询来解决这个问题?,mysql,Mysql,给定一个名为“bugs”的表,其中包含以下列(id、令牌、标题、类别、设备、报告的位置、创建的位置、更新的位置)。使用token=“token660”查找bug的标题,并在“2020-08-30”上报告。 我试过了 从Bug中选择title,其中token='token660'并在='2020-08-30'报告;“ 而且速度很慢。 如何优化它?如果您总是使用标记和报告作为搜索结果的条件,则可以在这些列上添加索引: CREATE INDEX bugs_idx ON bugs(token, repo

给定一个名为“bugs”的表,其中包含以下列(id、令牌、标题、类别、设备、报告的位置、创建的位置、更新的位置)。使用token=“token660”查找bug的标题,并在“2020-08-30”上报告。 我试过了 从Bug中选择title,其中token='token660'并在='2020-08-30'报告;“
而且速度很慢。
如何优化它?

如果您总是使用标记和报告作为搜索结果的条件,则可以在这些列上添加索引:

CREATE INDEX bugs_idx ON bugs(token, reported_at);
这将在这两列上创建一个索引,并使所有对这些列的搜索速度大大加快。您应该阅读索引,当您了解索引时,数据库将在一个全新的级别上开始工作

如果您确定token列和reported_at列的组合始终是唯一的,则可以添加唯一索引

CREATE UNIQUE INDEX bugs_idx ON bugs(token, reported_at);
但如果插入不是唯一的,这将阻止插入


当您添加索引时,它会使其自身保持最新,您可以运行原始查询,并且在创建索引后它应该会快速运行。

您尝试过解决这个问题吗?从基本的SQL查询教程开始,例如@MarkB Thank我尝试过“从Bug中选择标题,其中token='token660'和报告时间为='2020-08-30';“我需要花很多时间来优化它it@SamiKuhmonen我在上面的评论中更新了答案请添加您的表定义解释的输出以及表有多少行感谢您的贡献我现在很想学习不精确,但我想问另一个问题?我现在应该在索引后运行普通的select吗?CREA为Bug(标记,报告位置)上的Bug编制索引Bug_idx;从Bug中选择标题,其中标记='token660'和报告位置='2020-08-30';查询“创建索引Bug_idx ON Bug(标记,报告位置)”;“应该只执行一次。永远不再执行。现在索引已创建。然后您可以像以前一样运行SELECT。现在应该更快。我无法在问题中运行索引,因为这意味着我只能读取数据?无论如何,在没有索引@MrApneaOk的情况下对其进行优化。因此您只有读取权限?那么我恐怕您没有更多权限了。”可以。查询非常简单,数据库在进行良好搜索时应该没有问题,查询的简化程度再高不过。索引是优化慢速查询的方法,有时查询可能写得不好,您可以重写它,但在这种情况下不能。试着与具有写访问权限的人交谈,看看他们是否可以添加ind那么你的查询仍然会很快,不管是谁创建索引,只要索引就在那里。