mysql - sort - w3c sql order by




php排序比mysql“order by”好嗎? (4)

MySQL會贏。 除了列出的其他內容之外,還有一個原因是,假設記錄已經在數據庫中,您不必將它們從數據庫中復制出來進行排序。 對它們進行分頁或子索引將很容易並自動優化。

簡而言之,如果數據庫可以做到這一點,數據庫應該幾乎總是這樣做。

我想知道,就性能而言,考慮在具有非常非常多(> 1.000.000)記錄的表上選擇mysql時,使用sql“order by”更好地排序結果,或者在使用經典編程排序查詢後對結果進行排序算法......有人有什麼建議嗎?

坦克


mySQL,放下手。 它已經過優化,可以使用索引。 這在PHP中會很糟糕(你很快就會達到memory_limit )。


您將系統與在優化的C中實現的方法進行比較,意味著完成此任務,與將要在解釋的腳本語言中實現的另一個系統進行比較。

基本上,用C語言編寫的任何內容都要比用PHP編寫的等效函數快10到100倍。

正如已經指出的那樣,毫無疑問,正確配置數據庫並讓它完成工作會更有效率。


有時如果你可以避免“使用臨時;使用filesort”這是值得的,儘管我還沒有做過大量的測試。

1   SIMPLE  favorites   ref source_id,user2_id  source_id   3   const   137 Using index; Using temporary; Using filesort
1   SIMPLE  users   eq_ref  PRIMARY,updated PRIMARY 3   apm.favorites.target_id 1   Using where

而不是要求mysql按名稱排序,在ruby中我做

results.sort_by {|u| u.name.downcase}

生成的mysql查詢現在更簡單:

1   SIMPLE  favorites   ref source_id,user2_id  source_id   3   const   137 Using index
1   SIMPLE  users   eq_ref  PRIMARY,updated PRIMARY 3   apm.favorites.target_id 1   Using where

當然,如果你返回的行超過幾百行,你就不會想要這樣做。







sorting