我注意到的幾個查詢表上有很多列,當我做:選擇*時增加了多少時間?
SELECT column1, column2 FROM ...
它幾乎可以2X一樣快,當我這樣做:
SELECT * FROM ... # ~ 15 columns
什麼賬戶對於更多的時間才能返回*
查詢?我最初認爲,如果兩個查詢都檢索相同的行,那麼性能上的差異將變得微不足道。什麼說明了這種差異?
我注意到的幾個查詢表上有很多列,當我做:選擇*時增加了多少時間?
SELECT column1, column2 FROM ...
它幾乎可以2X一樣快,當我這樣做:
SELECT * FROM ... # ~ 15 columns
什麼賬戶對於更多的時間才能返回*
查詢?我最初認爲,如果兩個查詢都檢索相同的行,那麼性能上的差異將變得微不足道。什麼說明了這種差異?
雖然行數是一樣的,額外的列需要傳輸到客戶端,消耗網絡帶寬。需要額外的時間,這是爲什麼下載一個文件大七倍的文件需要更長時間的原因。此外,還可能需要從磁盤中讀取的塊,可能沒有其他要求,並在某些情況下甚至無力只從索引讀取完成查詢。這就是爲什麼你被鼓勵總是明確指定你的選擇列表。
的第一件事要做的就是看看「解釋計劃」,看看一個查詢結果比其他不同的查詢計劃:
http://dev.mysql.com/doc/refman/5.5/en/execution-plan-information.html
鑑於...
SELECT column1, column2 FROM yourtable
SELECT * FROM yourtable
MySQL的性能可以由一個以上的因素而改變,例如
...和幾個。試圖確定哪種方式更快時,您必須考慮所有這些因素。
在大多數情況下,我去查詢只有我想要的列,從而減少應用程序和數據庫服務器之間不必要的轉移負荷。但是......我不得不承認,如果只有幾列,或者如果我想要測試一些東西,我有時走SELECT *
- 快捷方式了。