首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库索引示例

数据库索引示例
EN

Stack Overflow用户
提问于 2012-08-16 13:02:51
回答 2查看 718关注 0票数 1

一个关于数据库索引如何工作的简单问题。

假设我有一个表'Student‘,它包含id(primary_key)、name和GPA列。假设我在id上有一个索引,但没有其他列。

现在,如果我使用name和GPA(而不是id)查询一条记录,它必须搜索所有匹配的记录。这里索引的优势是什么?

索引是否仅在查询包含索引列时有效?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-16 13:06:12

如果我使用名称和GPA(而不是id)查询记录,它必须在所有记录中搜索匹配项。这里索引的优势是什么?

你是对的。除了唯一索引还可以强制唯一性之外,没有其他优点

只有当查询包含索引列时,索引才有效吗?

对于查找匹配的行,基本上是肯定的,尽管如果order by包含索引列,索引也可以用来帮助排序

票数 2
EN

Stack Overflow用户

发布于 2012-08-16 13:24:55

在波希米亚人的回答中添加一些示例(假设是SQL RDBMS):

对于学生(姓名),

  1. An index IX1将有利于以下查询:

你需要一个索引,比如IX2 on SELECT * FROM Student WHERE name = 'Bloggs';

  • Similarly (GPA)

如果您同时拥有上述索引IX1和IX2,则SELECT * FROM Student WHERE GPA between 1 and 2;

  • If将在如下查询中“选择”其中之一:

只使用索引中的字段的SELECT * FROM Student WHERE name = 'Bloggs' and GPA between 1 and 2;

  • A查询可以完全由索引提供服务(即,不需要SQL在内部“连接”回表或集群)。例如,下面的内容将完全由IX1提供服务,因为名称在索引中。

SELECT name FROM Student WHERE name = 'Bloggs';

  • There必须在索引中具有良好的“选择性”,才能使用该索引。例如,如果数据库中的每个人都有一个名称'Bloggs',那么SQL很可能会绕过索引,转而扫描表。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11980983

复制
相关文章

相似问题

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