qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          總結MySQL建表、查詢優(yōu)化實用小技巧

           MySQL建表階段是非常重要的一個環(huán)節(jié),表結構的好壞、優(yōu)劣直接影響著后續(xù)的管理維護,趕在明天上班前分享總結個人MySQL建表、MySQL查詢優(yōu)化積累的一些實用小技巧。

            技巧一、數(shù)據表冗余記錄添加時間與更新時間

            我們用到的很多數(shù)據表大多情況下都會有表記錄的“添加時間(add_time)”,我建議大家再新增一個記錄“更新時間(update_time)”字段,在我的工作里需要為市場部、運營部等建立各種報表,而很多報表里的數(shù)據都是需要到大記錄表里去查詢的,如果直接查詢大表的話,查詢速度相當慢。那么,我們的解決辦法就是建立各種數(shù)據快照,數(shù)據快照都是通過腳本定時跑的。假如,哪一天原始數(shù)據表出現(xiàn)了問題,那么快照數(shù)據也會有問題,這個時候我們的快照腳本就得重新跑一份修復好了的數(shù)據,這樣有了update_time更新時間這個字段,我們就能很快定位記錄更新的時間。

            技巧二、不要拋棄insert ignore into與replace into

            大家肯定寫過一些腳本循環(huán)將記錄插入到數(shù)據表,例如使用PHP腳本。如果期間的一條SQL插入失敗,那么后續(xù)的插入將終止,你可以在腳本里繞過這個插入錯誤,一個好的辦法是使用ignore關鍵字來屏蔽插入錯誤。如果,你的數(shù)據表里已經存在有將要插入的相同記錄,那么這個時候就會產生插入報錯,使用insert ignore into將繞開這個錯誤,繼續(xù)下一條記錄的插入。

            如果你的表結構設計了唯一索引的話,那么使用replace into來更新你的數(shù)據表記錄再好不過了,尤其是你在寫一個腳本的時候,你就不需要在腳本里先查詢數(shù)據表是否存在該條記錄,如果存在,則更新;如果不存在則插入。你可以直接使用replace into,它會自動到數(shù)據表檢測,如果在唯一索引字段存在該值,則會先刪除該條記錄,然后再插入新記錄;如果唯一索引字段不存在該值,則直接插入數(shù)據表,簡單且非常實用。

            技巧三、給你的表建立唯一索引

            很多情況下建立表唯一索引,能給我們省下很多麻煩事,想上面說的replace into就必須是有唯一索引,當然,很多人喜歡用到的自增主鍵ID盡管也是唯一索引,我建議是能在其他經常出現(xiàn)在where條件屁股后面的字段,并且值是唯一的話可以加個索引甚至唯一索引,查詢速度將會提高很多。

            說在最后:當然,insert ignore into與replace into大家要根據自己的需求來確定,不一定就適合你現(xiàn)在的需求;我只是提示大家還有這么些個實用的小知識大家可以靈活運用到項目里邊。

          posted on 2013-06-28 11:24 順其自然EVO 閱讀(248) 評論(0)  編輯  收藏 所屬分類: 數(shù)據庫

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东明县| 道真| 中方县| 江门市| 长葛市| 乐陵市| 大名县| 玛纳斯县| 阿坝| 白朗县| 昔阳县| 城市| 冷水江市| 广西| 兰考县| 台北县| 进贤县| 古交市| 南汇区| 砀山县| 崇仁县| 会同县| 九寨沟县| 乌兰察布市| 微山县| 安远县| 襄城县| 林口县| 余江县| 武乡县| 中卫市| 仪陇县| 揭阳市| 兖州市| 克东县| 乌兰县| 临沭县| 美姑县| 朝阳县| 九龙县| 布尔津县|