MySQL何时更新索引

时间:2013-06-24 18:05:49

标签: mysql sql performance indexing

更新/插入后是否更新了索引?是在更新/插入查询返回之前,是在查询返回之后的某个时间,还是在执行使用索引的查询时。

2 个答案:

答案 0 :(得分:3)

索引更新是双重的。

第一部分是在索引中插入/更新/删除条目。一旦记录发生更改,索引就会更新,此过程会阻止查询直到完成。

这允许基于索引列上的条件更快地检索记录,这是索引最容易理解的目的。

第二部分是更新索引的统计数据。这允许优化器确定对于给定查询是否甚至值得使用索引。想象一下像SELECT * FROM users WHERE disabled = 0这样的查询。假设大多数用户实际上是活跃的。如果索引统计信息是最新的,则优化器将意识到查询将返回表中的大多数记录,该表几乎完全需要扫描。它可能会决定不使用索引并立即扫描表格。

此更新不会自动except in very specific situations。应使用ANALYZE TABLE [table_name]

定期手动更新这些统计信息

答案 1 :(得分:0)

您可能需要参考我认为对您的问题有帮助的以下链接:

    stackiflow上的
  1. This question
  2. 来自mysqlperformanceblog的
  3. This link
  4. 来自DBA Stackexchange论坛的
  5. This post