我的问题都在标题中。为什么索引确实使查询如此快?!我读过一些关于索引以及如何使用它们的文章。但我仍然不知道当我在列上创建索引时后台会发生什么?
它会对行进行排序吗?好吧?您知道,当我在两列上创建复合索引时,我的一个查询的速度从 4 秒
降低到 0.04 秒
。
无论如何,我很想了解创建索引时会发生什么?它们对性能有何帮助?
最佳答案
让我们看一个有 50 条记录的表,它没有索引。
您可能想查询第49条记录,当您输入
select * from <myTable> where Id='49'
后台发生的事情是,迭代每个页面或每一行,并检查 id 该行是否为第 49 行,一旦到达第 49 行,就会将该行推送到屏幕上。但这里需要注意的是,每个迭代的行都会先被拉入内存,然后将最终结果推送到屏幕上
如果您在 ID 列上添加了索引怎么办?所发生的情况是创建一个单独的表,用于存储 ID 值及其各自的行地址。因此,现在当您根据 ID 进行查询时,它会快速找到该特定 ID 的行地址并将其拉入内存,并且根据您想要的内容(“*”或某些列),它会在内存中进行过滤并推送到屏幕上。
这可能对你有帮助
关于mysql - 索引如何让速度快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390259/