我m student studying DB..
I was studying big physical three join operations(nested loop, sort merge, and hash join).
and I don
知道索引如何与上述联接一起使用..
这里我有疑问..
究竟什么是索引......?它只是关键吗?它的数据结构是什么? 它是真实记录的地址和索引属性名称的组合吗?
我想知道有关索引如何用作“密钥”的详细信息。
据我所知,聚集索引与实际表排序索引匹配。
和非聚集索引是指定表的实际匹配列的'地址指针'的索引。
从上面开始,
然后我必须这样思考..
然后当我们创建表并将一个属性指定为主键时, 它的作用是什么?
主键成为默认的聚簇索引? 并且物理上表的行数据按主键排序?
或磁盘上的实际顺序只是插入行数据时的顺序? 而主键只是用于表之间没有创建像index这样的效果的关系吗?
然后当我们创建聚簇索引时,磁盘上的物理顺序是重新排序的吗?
在这里,我真的无法理解......
如何说“使用索引,当我们想要找到满足特定谓词的数据行时会更快,因为它已经排序了”
(当我研究排序合并连接时,我发现了。 来源从每两个表中说,如果他们有索引,他们不需要排序阶段,可以直接合并..)
index在创建索引时使表排序? 我不知道为什么它说索引就像'魔法工具'..
谢谢你。我知道我的写得非常分散, 但我太困惑了,这些正是我头脑中的想法......如果他们说“从索引表到真实数据表,它会通过rowid访问”, ROWID是什么意思? 与主键或其他东西不同的是????
非常感谢你......
*对于Oracle,MySQL?
答案 0 :(得分:0)
在关系数据库中,主键是默认索引。假设r1 ....在表T1中使用C1 .....到Cn列,主键为P1,然后P1是默认索引。但是,如果你想搜索表T1的C5列,那么如果那列C5没有被索引,那么搜索算法会搜索r1 ...到rn的每一行,每列C1 ...... Cn.Let如果搜索时间单行是T1,然后是时间搜索表的单列= T1 / Cn(近似值)。但是,当你索引表T1的C5列时,那么搜索引擎算法的执行顺序首先搜索主键然后是索引键,所以C5值的访问时间相对于时间小于T1 / Cn。何时选择索引。 case1:如果在C1到Cn列的表T1的列内如果列CX的访问率的可能性对于时间段间隔p1 ... pn的列CX更高,那么CX是第一个索引的候选者,那么在你可以为其他人设计索引。
答案 1 :(得分:0)
我认为您的问题是我网站上的答案:
特别是您应该对以下章节感兴趣:
但如果你看一下完整的TOC,那可能是最好的: