資料庫的效能優化不僅僅是dba的事情,我們程式設計師也是需要了解的。更何況不是每個公司都是有dba的。這就需要我們程式設計師更多的注意。
現在的應用基本上都是關聯到對資料庫的操作,對於高併發的應用對資料庫的應用就更為重要。資料庫的優化主要包括資料庫表的設計和sql的優化。
以下是學習和應用中的總結
資料庫設計方面:
1、資料表字段型別能用數值型就用數字型,盡量不用字元型。
查詢時比較數值比比較字串效率高。占用的儲存空間可能會更少。
比如:存放手機號碼。手機號碼都是11位,用字元型村需要11個位元組而用無符號的整型只需要4個位元組。
記錄使用者登入的ip位址。按照傳統的字串方式存放"192.168.1.1"需要15位元組,ip位址是有32位二進位制組成,轉換成整數最大就4294967295,資料庫有inet_aton函式把ip位址轉換成整數,inet_ntoa把數值轉換成ip位址形式。
2、資料字段建立索引。
這個大傢伙都知道索引可以有效的提高查詢效率,但是索引也不是隨便就建的,索引是需要維護的,過多的建立索引就增加了維護索引的成本效能反而會下降。我們只需要在經常用於查詢條件的字段上建立索引即可。
sql優化方面:
1、盡量避免寫select * 。
因為select * 會查詢出所有的字段,查詢的字段越多會降低效率。如果資料庫伺服器和客戶端不在同一臺電腦上還會有網路傳輸的問題。如果查詢的錶友幾十個字段,而你只需要其中的幾個字段,那其餘的字段查出來就是一種浪費。我們應該需要哪些欄位就查詢哪些字段。
2、當只需要判斷是否有需要的資料時需注意。
當我們只需要判斷使用者表中有沒有四川的使用者時:
mysql:select 1 from users where addr='四川' limit 1;
oracle:select 1 from users where addr='四川' and rownum<=1;
這裡我們只需要知道是否有四川的使用者,當我們查詢到一條四川的使用者的記錄就說明有四川,就不需要繼續向下查詢。寫成select 1 是因為我們不需要查詢到使用者的資料,只是佔各位。
3、不要用null作為查詢條件。
select id,name from user where addr is null,select id,name from user where addr is not null;
is null和is not null 會導致全表掃瞄。
待續。。。
資料庫效能優化學習小記
看了 構建高效能web站點 的資料庫效能優化,來寫一下學習筆記 索引類似於書籍目錄裡的章節 建立合適的索引是我們自己的事情 組合索引即先查詢哪一章再查詢哪一節,不至於找到某一章之後進行掃瞄,浪費時間 組合索引的 在應該使用全表掃瞄的時候使用了索引掃瞄,將導致時間的大量浪費 使用慢查詢分析工具,找出用...
效能優化學習
離屏渲染的效能問題主要體現在兩個方面 特殊的離屏渲染 void display 除錯 color hits green and misses red 參考鏈結 除錯 光柵化的核心思想是快取。通過滑動可以看到 color copied images color misaligned images 除錯...
oracle資料庫優化學習筆記
1.資料庫優化的時期 資料庫的優化從設計,資料庫的安裝已經開始。2.資料庫效能的主要指標是響應時間。影響資料庫增長率的表的種類 c資料表 事務表 增長的主要因素 d臨時 介面表 3.資料庫優化的主要方法 a網路b硬體優化 主要在應用程式調整的初期。c作業系統的優化 unix系統 調整引數 共享記憶體...