11.在一條語句中不要重複使用相同的函式22
.盡可能在儲存過程中使用臨時變數和臨時表
3 如 if (object_id('
tempdb..#t
') is
notnull) drop
table#t4
select … into #t from…5
drop
table
#t ;63
.當用select into時,它會鎖住系統表(sysobjects,sysindexes等等),
7阻礙其他連線的訪問。所以在建立臨時表時應該用顯示申明語句,
8即不在事務內使用select into語句。
9select
into
#t .......
10begin
tran
11update
#t .......
12end
tran134
.儲存過程中涉及更改資料時一定要使用try catch 事務 回滾等
145.select子句中避免使用'*'
盡可能的寫出需要查詢的欄位名156
.條件中盡量少用否定型別的運算子,條件中盡量少用16'
<>
', '
!=''
not in
', '
not exists
','not like
'等否定型別的運算子,
17 因為它們不走索引全是表掃瞄 效率高低比較exists >
in>
notexists
>
notin
,18 所以可用exists代替in的使用, not exists或(outer
join
)代替not in的使用。197
.在where條件中in後的值排序為先繁後少,減少判斷次數
208.避免在索引列上使用is null 和 is
notnull
。null條件將使該索引無法作用。219
.盡可能不在條件中使用函式
2210.用'
>=
','<=
'替代'
>
','<'23
示例(不推薦)
24select
empno
25from
emp
26where deptno >3;
27示例(推薦)
28select
empno
29from
emp
30where deptno >=
4;
31兩者區別在於,前者dbms將直接跳到dept等於4的記錄而後者將首先定位
32 到deptno =
3的記錄再向前掃瞄到第乙個dept大於3的記錄
3311
.union代替or的使用
3412.top
+ 數值 替代 top
+百分比 的使用
3513
.盡量使用精準查詢
36 在like語句中,若能確定使用like'
a%'則不用like'
%a'或like'
%a%'
37因為前者能用上索引,而後兩者則不能。
38 且like'
%a%'
查詢時的耗時和字段值總長度成正比,
39所以用varchar比用char型別較高效。
40如果能精準查詢則堅決不能採用模糊查詢。
4114
.條件允許時union all替代union的使用
4215.沒有必要時不用distinct和order by
43distinct和order by這些動作可以改在客戶端執行。
44它們增加了額外的開銷。這同union和union all一樣的道理
4516.使用批處理更新語句,一次更新多條記錄比分多次更新而每次更新一條語句快。
00 SQL課程簡介
sql專案 sql sql初級 sql高階 sql專案 我們來看看wiki對sql的定義 sql就是structure query language的縮寫,是用來查詢和操作的資料的一種語言 課程中的定義式 a language used to interact with a database 看起來...
BGL學習00 開始
這篇blog是我學習 boost之bgl的開始。bgl是boost graph library的縮寫,是基於boost的乙個強大的圖論函式庫。其採用了c 泛型程式設計 generic programming 的思想,因而有強大的通用性 擴充套件性和高效率。從今天開始我將系統地學習這個庫,基本想法是逐...
創新班學習00
1.自己學。勿相互問,學習方法。通過網路學習。怎麼問問題。如何使用搜尋引擎。google。一兩天!周解決問題。2 期望得到的 a 學習能力。解決問題。語言,幾個小時,不超過三天。b.如何保證工作質量。不出錯誤。c目前軟體行業前沿語言,技術,設計。比如。13年使用golang語言,08年使用andro...