【问题标题】:When does MySQL update the indexesMySQL什么时候更新索引
【发布时间】:2013-06-21 08:20:17
【问题描述】:

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

【问题讨论】:

    标签: mysql sql performance indexing


    【解决方案1】:

    索引更新是双重的。

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

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

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

    此更新不会自动进行except in very specific situations。这些统计信息应定期手动更新ANALYZE TABLE [table_name]

    【讨论】:

    • 感谢您的回答。这就是我一直在寻找的。​​span>
    【解决方案2】:

    您可能需要参考以下链接,这些链接对您的问题很有帮助:

    1. This question 在 stackoverflow 上
    2. This link 来自 mysqlperformanceblog
    3. This post 来自 DBA Stackexchange 论坛

    【讨论】:

    • 该问题的答案是哪些条件会导致 MySQL 更新索引。我对 MySQL 何时实际更新索引更感兴趣,它是否在插入期间执行它,然后它从客户端查询返回,查询结束后的某个时间,或者直到执行可以使用索引的查询
    猜你喜欢
    • 2016-02-28
    • 1970-01-01
    • 2011-12-18
    • 2011-11-21
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多