總結MySQL建表、查詢最佳化的一些實用小技巧
MySQL建表階段是非常重要的一個環節,表結構的好壞、優劣直接影響著後續的管理維護,趕在明天上班前分享總結個人MySQL建表、MySQL查詢最佳化積累的一些實用小技巧。
技巧一、資料表冗餘記錄新增時間與更新時間
我們用到的很多資料表大多情況下都會有表記錄的“新增時間(add_time)”,我建議大家再新增一個記錄“更新時間(update_time)”欄位,在我的工作裡需要為市場部、運營部等建立各種報表,而很多報表裡的資料都是需要到大記錄表裡去查詢的,如果直接查詢大表的話,查詢速度相當慢。那麼,我們的解決辦法就是建立各種資料快照,資料快照都是透過指令碼定時跑的。假如,哪一天原始資料表出現了問題,那麼快照資料也會有問題,這個時候我們的快照指令碼就得重新跑一份修復好了的資料,這樣有了update_time更新時間這個欄位,我們就能很快定位記錄更新的時間。
技巧二、不要拋棄insert ignore into與replace into
大家肯定寫過一些指令碼迴圈將記錄插入到資料表,例如使用PHP指令碼。如果期間的一條SQL插入失敗,那麼後續的插入將終止,你可以在指令碼里繞過這個插入錯誤,一個好的辦法是使用ignore關鍵字來遮蔽插入錯誤。如果,你的資料表裡已經存在有將要插入的相同記錄,那麼這個時候就會產生插入報錯,使用 insert ignore into將繞開這個錯誤,繼續下一條記錄的插入。
如果你的表結構設計了唯一索引的話,那麼使用replace into來更新你的資料表記錄再好不過了,尤其是你在寫一個指令碼的時候,你就不需要在指令碼里先查詢資料表是否存在該條記錄,如果存在,則更新;如果不存在則插入。你可以直接使用replace into,它會自動到資料表檢測,如果在唯一索引欄位存在該值,則會先刪除該條記錄,然後再插入新記錄;如果唯一索引欄位不存在該值,則直接插入資料表,簡單且非常實用。
技巧三、給你的表建立唯一索引
很多情況下建立表唯一索引,能給我們省下很多麻煩事,想上面說的replace into就必須是有唯一索引,當然,很多人喜歡用到的自增主鍵ID儘管也是唯一索引,我建議是能在其他經常出現在where條件屁股後面的欄位,並且值是唯一的話可以加個索引甚至唯一索引,查詢速度將會提高很多。
說在最後:當然,insert ignore into與replace into大家要根據自己的需求來確定,不一定就適合你現在的需求;我只是提示大家還有這麼些個實用的小知識大家可以靈活運用到專案裡邊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4422/viewspace-2810594/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL查詢最佳化的5個實用技巧MySql
- 關於查詢最佳化的一些總結
- 關於MySQL 查詢表資料大小的總結MySql
- mysql 查詢建表語句sqlMySql
- 一些 實用的 git 小技巧Git
- 一些實用的 Laravel 小技巧Laravel
- 15個高效的MySQL資料庫查詢小技巧MySql資料庫
- SQL總結(二)連表查詢SQL
- mysql查詢效能優化總結MySql優化
- MySQL查詢最佳化MySql
- 一些超實用的視覺化圖表製作小技巧視覺化
- 關於查詢轉換的一些總結
- eclipse一些實用小技巧Eclipse
- MySQL查詢結果匯出方式總結MySql
- 【轉】MySQL 建表的優化策略 小結MySql優化
- 提高mysql查詢效率及一些使用技巧記錄MySql
- 【Mysql】MySQL查詢最佳化-explainMySqlAI
- MySQL查詢最佳化方案彙總(索引相關)MySql索引
- Mysql建表、索引、函式、查詢使用中的坑!!!MySql索引函式
- SQL單表查詢語句總結SQL
- mysql查詢顯示技巧MySql
- MySQL 索引及查詢優化總結MySql索引優化
- MYSQL INNODB中hash查詢表的實現MySql
- MySQL查詢效能最佳化MySql
- [Mysql]慢查詢最佳化MySql
- 圖論的一些建圖小技巧圖論
- 實用小技巧! 修改MySQL密碼MySql密碼
- [原]查詢透明表的實用方法
- Python實用技巧總結Python
- 幾個SQL查詢小技巧SQL
- 總結系統安全防護的三個實用小技巧薦
- SQL總結(七)查詢實戰SQL
- 總結MYSQL的最佳化MySql
- MySQL單表查詢MySql
- mysql鎖表查詢MySql
- MySQL 單表查詢MySql
- 【轉載】MySQL慢查詢日誌總結MySql
- 前端從業兩年總結的一些js使用小技巧前端JS