1樓:
其實各主流php框架都有這些細節的處理,國內yii用的多的話看文件唄:http://www.
拉到下面with語法,具體sql細節就是一次拿節約tcp來回消耗唄。
2樓:Lance Zhang
賈俊俊 答案裡面for裡面new物件的那個例子是錯的
最佳的方式應該是
new 物件a
for(x:y)
這樣寫,for外面new物件沒意義,按照一般邏輯而言,裡面引用的物件實際上還是每次迴圈不同(一般都是new出來);
其實想要完全避免在迴圈裡面訪問資料庫基本做不到,這跟業務邏輯有關係,不同情況有不同的優化方式,下面寫幾個常見情況
1.獲取乙個表,再遍歷獲取子表
寫多表關聯,一次把父子表資料都取出來;
如果子表資料很多重複,可以使用乙個map存放所有已經獲取過的子表資料,用主鍵作為key,這樣可以避免獲取重複資料;
如果子表資料很少更新,直接在獲取子表的方法做快取;
2.迴圈插入n行資料
使用batchupdate做優化
3.非常複雜的n表查詢,表資料非常多
這種情況下,多表關聯反而不一定好,一般在定時任務之類對響應時間要求不高的場合,適當在迴圈裡面去訪問資料庫反而更好
4.傳入乙個主鍵list,獲取對應行
賈俊俊 答案中的做法,迴圈拼接sql,但要注意
sql注入問題,建議使用mybatis等orm工具繫結多個變數
oracle in 的數量限制或者mysql的sql長度限制,這個可以有很多解決方法,比如換成or、使用臨時表等,不過還是應該盡量避免list過大的問題
在哲學作品的評鑑中,如何規避偏見?
星群 我記得以前看過一本物理科學史,裡面有乙個觀點讓我印象特別深刻,大致的意思是 物理學上許多顛覆式的突破,都不是某個科學理論讓整個學界心服口服,而是老一輩人死的七零八落以後,新一代人佔據了話語權之後,那個理論才得以獲得廣袤的土地從而成長為蒼天大樹。就這點來看,這可能不是乙個哲學問題,而是乙個如何進...
在挽回男朋友的過程中如何規避友誼誤區?
雲也 多為他讀莎士比亞少跟他談馬克思選集,此其一也。情人節和七夕的時候和他單獨吃飯,其二也。古人云,一法通,萬法通。幫你舉兩個例子了,夠了。旁通活用去吧。 馬鹿人 甩掉了義務,還享受到了權利 em 你可能得退出他的生活一段時間了。乙個周的斷聯沒什麼意義,只要你倆還能見面。關鍵在於,你可以跟其他異性走...
裝修中的抗有哪些,如何規避?
裝滿陽光的橘子 一般水電改造會有預收,千萬不要預收,會要很多最後,一定要提前定死,而且定好後的插座在想加會收費,如果提前知道這些可以免費加的,因為他們賺的這一項錢加幾個開關插座是綽綽有餘的。 Seven劉 裝修對比無非分為三個部分去進行對比 1.裝修公司品牌建議是找大公司,在當地有一定影響力的,做過...