2011-11-04 84 views
1

有沒有一種方法可以按指定列(例如用戶名)對錶格行進行排序,重新分配它的主鍵值,然後用排序的值替換表格內容?mySQL:Physical Sorting

+0

爲什麼在這個地球上你從「物理分類」看?您認爲打開硬盤時,任何文件的內容總是與硬盤上的順序相同嗎? – Kangkan

+0

@JourourEstrella我正在爲您投票。這是我能爲你做的最多的事情:-) –

回答

2

是的,MySQL有一種方法來確定文件中行的表排序。如果你的表是的MyISAM類型,你可以運行:

ALTER TABLE `users` ORDER BY `username`; 

該表將通過用戶名進行排序現在。這將修復文件中行的順序,文件本身可能在文件系統中被分割,並且無法用修改表來解決該問題。從the manual

ORDER BY使您能夠按特定順序創建具有行的新表。請注意,在插入和刪除之後,該表格不會保持此順序。這個選項主要用於當你知道你主要是在大部分時間以特定順序查詢行時。在對錶格進行重大更改後使用此選項,您可能會獲得更高的性能。在某些情況下,如果表格按您希望稍後訂購的列順序排列,則可能會使MySQL的排序更容易。

但是,如果您的意思是要重新排列數字主鍵,以便排序列表中的第一個用戶具有1,2等等,那麼就不要這樣做。永遠不要觸摸分配的主鍵。