更新/插入后是否更新了索引?是在更新/插入查询返回之前,是在查询返回之后的某个时间,还是在执行使用索引的查询时。
答案 0 :(得分:3)
索引更新是双重的。
第一部分是在索引中插入/更新/删除条目。一旦记录发生更改,索引就会更新,此过程会阻止查询直到完成。
这允许基于索引列上的条件更快地检索记录,这是索引最容易理解的目的。
第二部分是更新索引的统计数据。这允许优化器确定对于给定查询是否甚至值得使用索引。想象一下像SELECT * FROM users WHERE disabled = 0
这样的查询。假设大多数用户实际上是活跃的。如果索引统计信息是最新的,则优化器将意识到查询将返回表中的大多数记录,该表几乎完全需要扫描。它可能会决定不使用索引并立即扫描表格。
此更新不会自动except in very specific situations。应使用ANALYZE TABLE [table_name]
答案 1 :(得分:0)
您可能需要参考我认为对您的问题有帮助的以下链接: