我有一個countries
表結構像這樣用在ISO2列的索引:奇怪的指數活動加入
在做一個正常的選擇查詢,該ISO2指數正常工作:
但隨着在ISO2另一個表連接時,它的行爲很奇怪:
首先,它說:NULL
possible_keys但隨後仍然使用它?然後它還說256行是整個表格。它在大的更新上運行速度非常慢,所以我可以告訴它不使用索引。這裏有什麼問題?
編輯:另外,如果我從iso2索引中取出id
列(請參閱第一張圖片),那麼它會說沒有索引被用於連接。
更多信息:我一直在想我的正常化和數據使用country_id
代替country
的。當我注意到它真的很慢時,我正在更新表格country_id
。一些EXPLAIN讓我發現索引沒有被使用。也許它與ISO2是char(2)有關?
我被填充COUNTRY_ID這樣的:
UPDATE leads
LEFT JOIN countries on leads.country=countries.iso2
SET leads.country_id=countries.id
該查詢花了將近40秒的leads
表約10萬行。
我增加了一個示例更新的最佳數據類型。它使用MyISAM,但我嘗試切換引擎,沒有任何改變。我不明白的是,在連接執行「完整索引掃描」時,「SELECT」似乎只需要瀏覽1行? – hellohellosharp 2013-03-13 14:50:59