【发布时间】:2013-06-21 08:20:17
【问题描述】:
更新/插入后索引的更新时间是什么时候?是在更新/插入查询返回之前,是在查询返回之后的某个时间,还是在执行使用索引的查询时。
【问题讨论】:
标签: mysql sql performance indexing
更新/插入后索引的更新时间是什么时候?是在更新/插入查询返回之前,是在查询返回之后的某个时间,还是在执行使用索引的查询时。
【问题讨论】:
标签: mysql sql performance indexing
索引更新是双重的。
第一部分是在索引中插入/更新/删除条目。一旦记录发生更改,索引就会更新,并且此过程会阻止查询直到完成。
这允许基于索引列上的条件更快地检索记录,这是索引最容易理解的用途。
第二部分是更新索引的统计信息。这允许优化器确定对于给定的查询是否值得使用索引。想象一下像SELECT * FROM users WHERE disabled = 0 这样的查询。假设大多数用户实际上是活跃的。如果索引统计信息是最新的,优化器将意识到表中的大多数记录将由查询返回,几乎整个表都需要扫描。它可能会决定不使用索引并立即扫描表。
此更新不会自动进行except in very specific situations。这些统计信息应定期手动更新ANALYZE TABLE [table_name]
【讨论】:
您可能需要参考以下链接,这些链接对您的问题很有帮助:
【讨论】: