国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL語句優化技術分析

2024-07-21 02:47:19
字體:
來源:轉載
供稿:網友
SQL語句優化技術分析

最近正在學習數據庫,把SQL語句優化部分進行了整理,希望大家一起進步。

一、操作符優化

1、NOT IN操作符

此操作是強列不推薦使用的,因為它不能應用表的索引。

推薦方案:用NOT EXISTS 方案代替

2、IS NULL IS NOT NULL操作(判斷字段是否為空)

判斷字段是否為空一般是不會應用索引的,因為索引是不索引空值的。

推薦方案:用其它相同功能的操作運算代替,如:a is not null 改為 a>0 或a>’’等。不允許字段為空,而用一個缺省值代替空值,如申請中狀態字段不允許為空,缺省為申請。

3、> < 操作符(大于或小于操作符)

大于或小于操作符一般情況下是不用調整的,因為它有索引就會采用索引查找,但有的情況下可以對它進行優化,如一個表有100萬記錄,一個數值型字段A,30萬記錄的A=0,30萬記錄的A=1,39萬記錄的A=2,1萬記錄的A=3。那么執行A>2與A>=3的效果就有很大的區別了,因為A>2時Oracle會先找出為2的記錄索引再進行比較,而A>=3時ORACLE則直接找到=3的記錄索引。

4、LIKE操作符

LIKE操作符可以應用通配符查詢,里面的通配符組合可能達到幾乎是任意的查詢,但是如果用得不好則會產生性能上的問題,如LIKE ‘%5400%’ 這種查詢不會引用索引,而LIKE ‘X5400%’則會引用范圍索引。

一個實際例子:用YW_YHJBQK表中營業編號后面的戶標識號可來查詢營業編號 YY_BH LIKE ‘%5400%’ 這個條件會產生全表掃描,如果改成YY_BH LIKE ’X5400%’ OR YY_BH LIKE ’B5400%’ 則會利用YY_BH的索引進行兩個范圍的查詢,性能肯定大大提高。

5、UNION操作符

UNION在進行表鏈接后會篩選掉重復的記錄,所以在表鏈接后會對所產生的結果集進行排序運算,刪除重復的記錄再返回結果。實際大部分應用中是不會產生重復的記錄,最常見的是過程表與歷史表UNION。如:select * from gc_dfysunionselect * from ls_jg_dfys這個SQL在運行時先取出兩個表的結果,再用排序空間進行排序刪除重復的記錄,最后返回結果集,如果表數據量大的話可能會導致用磁盤進行排序。

推薦方案:采用UNION ALL操作符替代UNION,因為UNION ALL操作只是簡單的將兩個結果合并后就返回。

select * from gc_dfysunion allselect * from ls_jg_dfys


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏州市| 潍坊市| 舟山市| 报价| 麻城市| 万荣县| 崇文区| 博乐市| 沙湾县| 江永县| 涟水县| 翼城县| 石棉县| 凉城县| 岑溪市| 柯坪县| 阿坝| 德钦县| 苏尼特右旗| 石林| 富宁县| 香格里拉县| 苗栗市| 榕江县| 焦作市| 宜兴市| 平山县| 伊川县| 包头市| 麦盖提县| 横峰县| 马边| 梨树县| 罗田县| 青州市| 沙河市| 临湘市| 翁牛特旗| 驻马店市| 宜春市| 武宣县|