首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引列中包含结果列对性能的影响

索引列中包含结果列对性能的影响
EN

Database Administration用户
提问于 2013-01-01 01:36:02
回答 1查看 527关注 0票数 3

我有一个数据库(在MySQL中,使用InnoDB),用于三维图像中的纹理识别。在它中,将有一个包含色调的纹理(纹理像素)表,其形式如下:

代码语言:javascript
复制
texelid INT (PK AI NN)
texelx TINYINT (NN)
texely TINYINT (NN)
texelhue INT (NN)
identifiedtex INT (NN) 

标识符是一个标识物与多个纹理(纹理元素)的1:N关系中的外键。

如果我使用texelxtexelytexelhue创建索引(B树),那么我可以快速找到一行。但是,如果我添加identifiedtex作为索引中的最后一列,这会不会加快纹理的查找,因为结果是索引的一部分?正如注意的一样,texelx、texely和texelhue的组合将导致多个标识,需要查找几个不同的行来识别纹理。

我计划通过对同一表(自连接)使用内部连接来识别纹理,以便查找具有匹配X、匹配Y和匹配色调的行,并根据不同的标识物进行分组。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-01-01 02:38:03

根据所提供的信息,我会尝试回答.

你说

如果我添加标识符作为索引中索引的最后一列,这会不会加快纹理的查找,因为结果是索引的一部分?

让我说一下,您有以下查询:

代码语言:javascript
复制
SELECT identifiedtex FROM texels
WHERE texelx = 210938
AND texely = 378432
AND texelhue = 23;

拥有一个索引(称为Index3)会产生什么效果?

代码语言:javascript
复制
texelx, texely, texelhue

相对于此索引(称为Index4)

代码语言:javascript
复制
texelx, texely, texelhue, identifiedtex 

当您仅使用identifiedtex检索Index3时,将需要额外的表查找来确定表中的identifiedtex

当您仅使用identifiedtex检索Index4时,它将只进行索引查找,因为所有提到的列都在索引中。它被称为覆盖指数。

我在过去的文章中提到了覆盖索引:

因此,要回答您原来的问题,是的,添加identifiedtex将使查询速度更快。

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

https://dba.stackexchange.com/questions/31258

复制
相关文章

相似问题

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