php mysql select的時候*的效率問題

來源:互聯網
上載者:User
關鍵字 php mysql
我想問下select的時候field為*和指定$field的時候效率對比大概是什麼樣的?
例如
我要查的表有10列 我實際需要裡面8列的資訊 那麼 field * 和 field 指定 8列的效率相差大嗎?

回複內容:

我想問下select的時候field為*和指定$field的時候效率對比大概是什麼樣的?
例如
我要查的表有10列 我實際需要裡面8列的資訊 那麼 field * 和 field 指定 8列的效率相差大嗎?

資料庫的最佳化,select你所需要的欄位,別看差不多,等到你資料量大的時候,這種優勢就體現出來了

資料量大的時候,或者極限最佳化的情況下肯定是有差別的

個人的理解是在讀取的過程中可能沒有太多效能差別,但是讀出來的資料是需要用的,資料轉送的過程中,field *出來的顯然要比field相應欄位的要大,所以這時會產生效率差別。

建議用什麼欄位就select什麼欄位 我們要寫最優的SQL

如果你的表欄位不是特別多的話,效率上不會有什麼明顯的差別。

1、記憶體開銷上:
假設當你的表的有100個欄位的話,比如有一個欄位是一篇5000字的文章text類型。
你select * from table limit 100這個時候查詢會佔用很多臨時記憶體空間去完成你的請求。

2、傳銷效率上
並且,資料從MySQL伺服器傳輸到你的用戶端,也會花更多的時間傳輸。

3、安全問題
如果你的表上面有敏感的欄位,比如使用者隱私的性別,金錢數,當你select *時,而上層邏輯在這裡又有漏洞,就有可能會暴露。

4、代碼實踐
當你修改表欄位名稱a改成b後,select * 語句執行不會有問題,但是你的代碼裡取資料時,可能會有隱藏的問題。
因為你之前本意是select a,現在變成select b,而你上層邏輯之前取得是a。

用什麼 查什麼 select * 肯定是影響效率的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.