我的问题全部在标题中。为什么索引真的如此快速地进行查询?!我已经阅读了一些关于索引以及如何使用它们的文章。但是,当我在列上创建索引时,我还不知道后台会发生什么?
它会对行进行排序吗?好的吗?您知道,当我在两列上创建复合索引时,我的一个查询的速度从4 sec
减少到0.04 sec
。
无论如何,我对理解创建索引时会发生什么感兴趣?他们如何帮助表现?
答案 0 :(得分:1)
让我们拿一张有50条记录的表,它没有索引。
您可能需要查询第49条记录以及键入
select * from <myTable> where Id='49'
在后台发生的事情是,每个页面或每一行都被迭代并检查id是否该行是否为第49行,一旦它落在第49位,它就会在屏幕上推动该行。但需要注意的是,每个迭代行首先被拉入内存,然后最终结果被推到屏幕上
如果您在ID列上添加了索引,该怎么办?发生的是创建一个单独的表,它存储ID值及其各自的行地址。所以现在当你基于ID查询时,它会快速找到该特定ID的行地址并将其拉入内存,并根据你想要的任何内容,一个&#34; *&#34;或者某些列,它会在内存中过滤并推送到屏幕上。
这可能会对你有所帮助