在更新/插入后,索引何时更新?是在更新/插入查询返回之前,还是在返回查询之后的某个时间点,或者是在使用索引的查询被执行时。
在更新/插入后,索引何时更新?是在更新/插入查询返回之前,还是在返回查询之后的某个时间点,或者是在使用索引的查询被执行时。
索引更新分为两个部分。
第一部分是将条目插入/更新/删除到索引中。索引会在记录更改后立即更新,此过程会阻止查询直到完成。
这允许基于索引列的条件更快地检索记录,这是索引最常被理解的用途。
第二部分是更新索引的统计信息。这使优化器可以确定是否值得为给定的查询使用索引。想象一个查询,例如 SELECT * FROM users WHERE disabled = 0
。假设大多数用户实际上是活跃的。如果索引统计信息是最新的,优化器将意识到表中的大多数记录将被查询返回,因此几乎需要扫描整个表。它可能会决定不使用索引并直接扫描表。
除非在非常特定的情况下,否则不会自动进行此更新(链接)。这些统计数据应该经常手动更新,使用 ANALYZE TABLE [table_name]
命令。
您可能会想参考我找到的以下链接,对您的问题有所帮助: