mysql - sort - w3c sql order by
php排序比mysql“order by”好嗎? (4)
我想知道,就性能而言,考慮在具有非常非常多(> 1.000.000)記錄的表上選擇mysql時,使用sql“order by”更好地排序結果,或者在使用經典編程排序查詢後對結果進行排序算法......有人有什麼建議嗎?
坦克
MySQL會贏。 除了列出的其他內容之外,還有一個原因是,假設記錄已經在數據庫中,您不必將它們從數據庫中復制出來進行排序。 對它們進行分頁或子索引將很容易並自動優化。
簡而言之,如果數據庫可以做到這一點,數據庫應該幾乎總是這樣做。
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
當然,如果你返回的行超過幾百行,你就不會想要這樣做。