Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以及何时更新MySQL索引?_Sql_Mysql_Indexing - Fatal编程技术网

如何以及何时更新MySQL索引?

如何以及何时更新MySQL索引?,sql,mysql,indexing,Sql,Mysql,Indexing,我正在使用此SQL查询创建索引: $query = "CREATE INDEX id_index2 ON countries(geoname_id, name)"; 添加新条目时如何更新索引 我应该在CRON中运行带有更新查询的PHP脚本并每晚运行它吗 这是自动索引更新的最佳实践吗?在插入/更新行时,MySQL会自动更新索引。(这可能是大型网站的性能指标,但您可能没有运行大型网站:))您不需要在初始创建后执行任何操作。它将在添加行后自动更新,无需运行任何更新语句

我正在使用此SQL查询创建索引:

    $query = "CREATE INDEX id_index2
            ON countries(geoname_id, name)";
添加新条目时如何更新索引

我应该在CRON中运行带有更新查询的PHP脚本并每晚运行它吗


这是自动索引更新的最佳实践吗?

在插入/更新行时,MySQL会自动更新索引。(这可能是大型网站的性能指标,但您可能没有运行大型网站:))您不需要在初始创建后执行任何操作。

它将在添加行后自动更新,无需运行任何更新语句。

但当我的网站越来越大,并且变得“滞后”时,我该怎么办?停用自动更新和手动更新?删除索引,然后创建一个新的索引?等待它明显(可测量)出现问题。这可能不会是个问题。如果您担心,请密切关注您是否使用了性能最佳的存储引擎,并尽量减少应用程序中特定于DBMS的代码,以便在必要时可以轻松地使用其他DBMS。从头开始重建索引要比在日常使用中维护索引慢得多——除了在极端情况下,甚至不要考虑删除索引并创建一个新的索引。平均而言,国家不会经常更改。如果你有很多“geoname_id”值,并且正在确定每个值所在的国家,那么你可能会有更多的流量。尽管如此,除非您知道MySQL索引比一般DBMS(我对此表示怀疑)更糟糕,否则您不应该担心它——让MySQL来完成它的工作。