SQL使用的一些個人積累

2021-10-23 14:00:12 字數 1477 閱讀 6481

避免全表掃瞄和索引失效資料庫盡量不要設null值,可以設定預設值為0where語句後面條件不要使用!=、><、in、not in、%..、%...%、數學計算、函式,這些都會導致索引失效而全表掃瞄。聯合索引的條件一定要按照最左匹配,別忘記!乙個表的索引個數最好不要超過六個當使用if標籤在where後面時,要注意全部為空的情況,解決方法設定where 1=1。oracle庫生成當前時間value設定為sysdate就可(注意時間字段必須為date型別);mysql庫生成當前時間value設定為now()就可;oracle中char型別作為條件查詢時,如果是時間等數字。則會按照int去比較。varchar2型和date型則按照string比較。
主鍵自動建立唯一索引頻繁作為查詢條件的字段應該建立索引查詢中與其他表關聯的字段,外來鍵關係建立索引單鍵/組合索引的選擇問題,組合索引的價效比更高查詢中排序的字段,排序欄位若通過索引去訪問將大大提高排序速度查詢中統計或者分組字段。過濾條件好的字段選擇一段選擇加索引

一.首先開啟資料庫慢查詢日誌,定位到查詢效率比較低的sql , 找出對應的sql語句並進行分析

1.表設計是否規範,是否符合三正規化的標準

(1)第一正規化:保證原子性(不可拆分)

(2)第二正規化:每張表都有主鍵

(3)第三正規化(每一列都有主鍵相關)

2.檢視資料表中是否存在大量的冗餘字段,字段資料型別是否合理

3.盡可能的使用varchar代替char 建表資料型別,能用數值的絕對不用字元儲存

4.盡量避免null值,使用預設值替代空值,數值型可以使用0,字元型可以使用空字串

二.檢視sql語句是否規範

(1)避免使用關鍵字:or ,in,not in ,!=,<>,避免使用select *

(2)盡量避免子查詢,大部分子查詢都可以連線查詢

(3)用到or的地方可以使用union去代替實現

(4)用到in的地方可以使用exists去代替

三.分析sql的索引是否可以用上

(1) explain查詢sql的執行計畫,重點關注的幾個列就是,type是不是全表掃瞄,key使用的是哪個索引

(2)看一下索引是否能夠用的上,主要看key使用的是哪個索引

(3)看一下rows掃瞄行數是不是很大

一些個人的想法

今天是2016年4月2日,星期六。目前我已經在網際網路行業裡摸爬滾打了三年有餘,加上七年的求學生涯,轉眼一看已經十年了。過去的十年是網際網路行業蓬勃發展的十年,雲計算 資料探勘以及移動網際網路的興起讓我們的生活出現了翻天覆地的變化 在這個遍地充滿機會的時代裡,出現了乙個又乙個的弄潮兒 這是乙個最好的...

關於sql注入的一些個人心得

sql 注入就是通過使用者提交的資料中加入一些特殊字元如單引號等來影響sql命令的行為 這些網上都有很多說明,只要搜一下都會有很多。好一點的會知道通過表單提交的資料來注入,很少有人會注意到通過一些隱藏的域或都不可輸入的表單項來注入 其實像checkbox radio 這樣的表單元素都是可以用來作為s...

PDV的一些個人理解

最近剛剛考完sas base,對這個考試的一大感受就是,只要你理解了pdv,基本上就不成問題。接下來談談我對pdv的理解吧,也算是學習sas的過程中的乙個筆記。sas的執行有兩個階段需要了解,編譯階段 compilation phase 和執行階段 execution phase 編譯階段sas主要...