2009-10-05 49 views
0

我正在使用Geonames數據庫作爲酒店預訂網站。該數據庫有兩個表格,一個用於國家,另一個用於超過3百萬的城市。條目。如果我嘗試獲取特定國家/地區的所有城市,則查詢速度太慢。我認爲是因爲我沒有定義任何索引。在超過3密耳的數據庫中搜索。條目

該國表有以下字段:

  • iso_alpha2(國家代碼)
  • 大陸
  • 人口

cities表具有以下字段:

  • asciiname
  • alternate_names
  • 國家

從城市表中的 「國家」 領域涉及的國家表 「iso_alpha2」 字段。

如何加快查詢速度?

P.S.我正在使用MySQL。

+4

「我認爲是因爲我沒有定義任何索引。」 - 我認爲你自己已經回答了你的問題... – f3lix 2009-10-05 09:06:32

回答

1

您需要在WHERE子句中使用的字段上添加索引(在您的情況下,它似乎是國家/地區字段)。

編輯:一兩件事 - 如果你有需要添加包含子句中使用的所有字段的索引WHERE子句中的多個條件(其上的字段單獨的索引將無法正常工作)。但在你的情況下,我認爲國家領域的指標應該做的。

1

對於此查詢,你只需要在城市表:

select name from cities where country = 'US' 

該查詢,將有助於對國家索引中受益。

+1

所以改變表格'城市'ADD INDEX(country(2));應該做的伎倆? – Psyche 2009-10-05 09:29:39

+0

那麼我不會明確指定長度,這可能會產生一些副作用。所以「改變表格城市添加索引(國家);」 – Andomar 2009-10-06 12:17:57