更新/插入后索引到底什么时候更新?是在更新/插入查询返回之前,是在查询返回之后的某个时间,还是在执行使用索引的查询时。
索引更新有两个方面。
第一部分是在索引中插入/更新/删除条目。一旦记录发生更改,索引就会更新,并且此过程会阻塞查询直到完成。
这允许根据索引列上的条件更快地检索记录,这是索引最容易理解的用途。
第二部分是更新索引的统计数据。这允许优化器确定对于给定的查询是否值得使用索引。想象一下这样的查询SELECT * FROM users WHERE disabled = 0
。假设大多数用户实际上都是活跃的。如果索引统计信息是最新的,优化器将意识到表中的大多数记录将由查询返回,几乎整个表都需要扫描。它可能会决定不使用索引并立即扫描表。
此更新不会自动进行除非在非常特殊的情况下 http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_stats_on_metadata。这些统计数据应定期手动更新ANALYZE TABLE [table_name] http://dev.mysql.com/doc/refman/5.6/en/analyze-table.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)