一个关于数据库索引如何工作的简单问题。
假设我有一个表'Student‘,它包含id(primary_key)、name和GPA列。假设我在id上有一个索引,但没有其他列。
现在,如果我使用name和GPA(而不是id)查询一条记录,它必须搜索所有匹配的记录。这里索引的优势是什么?
索引是否仅在查询包含索引列时有效?
发布于 2012-08-16 13:06:12
如果我使用名称和GPA(而不是id)查询记录,它必须在所有记录中搜索匹配项。这里索引的优势是什么?
你是对的。除了唯一索引还可以强制唯一性之外,没有其他优点
只有当查询包含索引列时,索引才有效吗?
对于查找匹配的行,基本上是肯定的,尽管如果order by包含索引列,索引也可以用来帮助排序
发布于 2012-08-16 13:24:55
在波希米亚人的回答中添加一些示例(假设是SQL RDBMS):
对于学生(姓名),
你需要一个索引,比如IX2 on SELECT * FROM Student WHERE name = 'Bloggs';
如果您同时拥有上述索引IX1和IX2,则SELECT * FROM Student WHERE GPA between 1 and 2;
只使用索引中的字段的SELECT * FROM Student WHERE name = 'Bloggs' and GPA between 1 and 2;
SELECT name FROM Student WHERE name = 'Bloggs';
https://stackoverflow.com/questions/11980983
复制相似问题