2010-03-21 37 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

它會在添加行後自動更新,無需運行任何更新語句。