数据库优化小结
WHERE條件的優(yōu)化:
1、IN:至少多一個轉(zhuǎn)換的過程(先試圖轉(zhuǎn)成多個表的連接,如果轉(zhuǎn)換不成功先執(zhí)行IN里面的子查詢,再查詢外層記錄)
2、NOTIN:不能應用表索引,可用NOT EXISTS替換的
3、<>:不用索引,全表掃描。替換方案:>X OR <Y
4、>與>=的區(qū)別 >2會從2開始找數(shù)據(jù),>=3則是從3開始找數(shù)據(jù)。但是>=3不知道是否會影響索引功能,采用哪個需根據(jù)實際數(shù)據(jù)(自己估測)選擇。
5、LIKE:'%%'將不使用索引,'%'引用范圍索引
6、UNION:二表鏈接后進行排序,刪除重復,再返回結(jié)果。UNION ALL 直接合并返回結(jié)果。
7、SQL書寫影響,盡量做到帶上所有者(性能),保持一種風格(同一查詢,書寫不一時可能會共享不了前一次查詢產(chǎn)生的緩存)
8、WHERE 后面條件順序:把過濾數(shù)據(jù)越多的放到越前面。
9、FROM后表順序:數(shù)量越小的放前面。
10、索引的利用:
? A、采用函數(shù)處理的字段不能利用索引,如:
?substr(COL1,1,4)=’ABCD’,優(yōu)化處理:COL1 like ‘ABCD%’?
? B、進行了顯式或者隱式轉(zhuǎn)換的不能利用索引,如:
?COL1+20>50,優(yōu)化處理:COL1>30 
?'X'+COL1>'X5400021452',優(yōu)化處理:COL1>'5400021542'
? C、條件內(nèi)包含多個字段的不能利用索引,如:
?COL1>COL2,無法進行優(yōu)化?
?COL1+COL2=’ABCD’,優(yōu)化處理:COL1=’AB’ and COL2=’CD
關于索引
1、有大量重復值、且經(jīng)常有范圍查詢(between, >,< ,>=,< =)和order by、group by發(fā)生的列,可考慮建立群集索引; 
2、經(jīng)常同時存取多列,且每列都含有重復值可考慮建立組合索引; 
3、組合索引要盡量使關鍵查詢形成索引覆蓋,其前導列一定是使用最頻繁的列。
轉(zhuǎn)載于:https://www.cnblogs.com/jiu9gm/archive/2011/01/28/1947092.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
                            
                        - 上一篇: android用户界面-菜单
 - 下一篇: 总结2010展望2011