2012-06-10 59 views
0

我有以下表結構。索引表加快訂單的最佳方式

town: 

id (MEDINT,PRIMARY KEY,autoincrement), 
town(VARCHAR(150),not null), 
lat(FLOAT(10,6),notnull) 
lng(FLOAT(10,6),notnull) 

我經常使用「SELECT * FROM town ORDER BY town」查詢。我嘗試索引城鎮,但沒有被使用。那麼索引的最佳方式是什麼,以便我可以加快查詢速度。

使用EXPLAIN(UNIQUE INDEX出現在鎮):中集

mysql> EXPLAIN SELECT * FROM studpoint_town order by town \G 
*************************** 1. row *************************** 
      id: 1 
    select_type: SIMPLE 
     table: studpoint_town 
     type: ALL 
possible_keys: NULL 
      key: NULL 
     key_len: NULL 
      ref: NULL 
     rows: 3 
    Extra: Using filesort 

1行(0.00秒)

ragards, 拉維。

+0

你怎麼知道'town'上的索引沒有被使用?你可以爲你的查詢發佈'EXPLAIN'的輸出嗎?你有沒有試過[index hint](http://dev.mysql.com/doc/en/index-hints.html) 'SELECT * FROM鎮FORCE INDEX FOR ORDER BY(index_name)ORDER BY town'? – eggyal

+0

@eggyal我更新瞭解釋結果。 – ravi

回答

1

您的EXPLAIN輸出表示當前studpoint_town表只有3行。作爲the manual解釋說:

EXPLAIN的輸出顯示在typeALL當MySQL使用表掃描來解決查詢。這通常在下列情況下發生:

[...]

  • 表是如此之小,這是更快地執行表掃描比一鍵查找打擾。這對於行數少於10行且行長度較短的表很常見。在這種情況下不要擔心。
相關問題