日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
不用select的原因有哪些

這篇文章主要講解了“不用select的原因有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“不用select的原因有哪些”吧!

創(chuàng)新互聯(lián)專注于阜康網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供阜康營銷型網(wǎng)站建設(shè),阜康網(wǎng)站制作、阜康網(wǎng)頁設(shè)計(jì)、阜康網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造阜康網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供阜康網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

第一宗罪:不必要的 IO

這會(huì)導(dǎo)致 DBMS 讀取所有的數(shù)據(jù) pages,但是這些數(shù)據(jù)你又不用,在后來的 SQL  中又可能被過濾掉了或者是直接沒用,但是讀取數(shù)據(jù)是需要成本的,尤其大字段,例如 blob,text。

select colunm_a,column_b(select * from XXX) tmp

第二宗罪:增加了網(wǎng)絡(luò)負(fù)擔(dān)

讀取更多的數(shù)據(jù)意味著返回更多的數(shù)據(jù)給客戶端,這就是意味著要占用更多的網(wǎng)絡(luò)帶寬。

第三宗罪:占用了更多內(nèi)存

因?yàn)樽x取了多余的數(shù)據(jù),你的程序需要更多的內(nèi)存去存儲(chǔ)這些數(shù)據(jù),這意味著你將會(huì)使用珍貴的內(nèi)存資源去存儲(chǔ)這些不必要的數(shù)據(jù)。

第四宗罪:對(duì) ResultSet 上列順序的依賴

如果你用了 select * 在你的程序中,并且依賴 ResultSet(返回結(jié)果)的列順序。

那么如果修改了表結(jié)構(gòu)(添加或者刪除字段)可能會(huì)影響返回結(jié)果的列順序,從而可能導(dǎo)致你的程序數(shù)據(jù)錯(cuò)誤或者程序異常。

第五宗罪:視圖綁定

在數(shù)據(jù)庫設(shè)計(jì)過程中,我們經(jīng)常會(huì)有這樣的情況下:

  • 某個(gè)基礎(chǔ)表會(huì)被多個(gè)視圖或者存儲(chǔ)過程引用。

  • 修改基礎(chǔ)表的時(shí)候,我們必須小心翼翼地,因?yàn)椴粫?huì)有任何提示告訴我們,如果繼續(xù)修改,會(huì)不會(huì)造成視圖或者存儲(chǔ)過程有問題。

  • 即便我們知道有問題,我們也沒有辦法去讓視圖和存儲(chǔ)過程刷新得到表最新的信息。

如果你在創(chuàng)建視圖中使用了 select *,就會(huì)導(dǎo)致各種各樣的 Bug。

第六宗罪:關(guān)聯(lián)沖突(Conflict in JOIN)

在簡(jiǎn)單的 SQL 中可能會(huì)表現(xiàn)正常,但是在你多表關(guān)聯(lián)的時(shí)候可能會(huì)因?yàn)橹孛侄螌?dǎo)致 SQL 錯(cuò)誤。

例如 created,status,updated 等常見字段(一般表都會(huì)有)。

第七宗罪:拷貝數(shù)據(jù)

當(dāng)你使用 SELECT * into INSERT .. SELECT  做數(shù)據(jù)拷貝的時(shí)候(一種常見的數(shù)據(jù)拷貝方式),當(dāng)兩張表的字段不一致時(shí),你就可能將錯(cuò)誤的數(shù)據(jù)放入了錯(cuò)誤的列。

第八宗罪:拒絕了使用覆蓋索引的可能性

覆蓋索引是 MySQL 中非常重要的是一個(gè)優(yōu)化手段,基本原理就是查詢都字段都在索引中避免回表,所以 * 會(huì)導(dǎo)致覆蓋索引失效。

總結(jié)

不使用 select

主要是是圍繞著資源、和程序的穩(wěn)定性和安全來說。

①浪費(fèi)了時(shí)間

不論是讀取數(shù)據(jù)還是傳輸數(shù)據(jù),浪費(fèi)都意味著等待,時(shí)間是無價(jià)的。

②浪費(fèi)了資源

資源這么寶貴,你怎么能這樣呢?

③增加了系統(tǒng)出 Bug 的可能性

例如:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 程序正確運(yùn)行數(shù)據(jù)不對(duì)

  3. 程序報(bào)錯(cuò)

  4. 程序運(yùn)行結(jié)果不確定

為什么有人會(huì)使用 select * 呢

①珍惜時(shí)間

可以搞定的事情,為啥還要寫那個(gè)多字段呢,也不美觀和直接啊,其實(shí)就是懶!

②減少 SQL 解析器的工作

認(rèn)為在 select 語句中協(xié)商眾多的字段,會(huì)增減 SQL 解析的工作,例如是有權(quán)限、字段是否存在等等。

這個(gè)想法是對(duì)的,但是這是很早以前的情況,現(xiàn)在 * 反而會(huì)增加 SQL 解析器的工作。

感謝各位的閱讀,以上就是“不用select的原因有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)不用select的原因有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


當(dāng)前文章:不用select的原因有哪些
本文路徑:http://www.dlmjj.cn/article/gidcgg.html