2010-03-21 46 views
4

我使用这个SQL查询来创建一个索引:如何以及何时更新MySQL索引?

$query = "CREATE INDEX id_index2 
      ON countries(geoname_id, name)"; 

如何更新索引时,在添加新条目?

我应该使用CRON中的更新查询运行PHP脚本并每天晚上运行它吗?

这是自动索引更新的最佳做法吗?

回答

9

当您插入/更新行时,索引由MySQL自动更新。 (这可能是一个巨大网站的性能打击者,但你可能没有运行一个巨大的网站:))。在初始创建之后,你不需要做任何事情。

+0

但是当我的网站变得越来越大,它变得“滞后”时,我该怎么做呢?无效的自动更新和手动更新?删除索引,然后创建新的? – 2010-03-21 06:02:13

+0

等待,直到它明显(可测量地)是一个问题。这可能不会是一个问题。如果您担心,请注意您是否使用性能最佳的存储引擎,并尽量减少应用程序中特定于DBMS的代码,以便在证明有必要时可以轻松转移到备用DBMS。从头开始重建索引比平常使用索引要慢得多 - 甚至不要想到删除索引并创建一个新索引,除非是极端情况。 – 2010-03-21 06:10:35

+0

平均而言,各国不会经常改变这一切。如果您有很多'geoname_id'值,并且正在确定每个国家所在的国家/地区,那么您可以获得更多流量。尽管如此,除非你知道MySQL索引比一般的DBMS差(我怀疑),否则你不应该担心 - 让MySQL做它的工作。 – 2010-03-21 06:15:34

2

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

相关问题