在建立表時,經常要給某些列設定 not null 的約束。可是為什麼我們盡量不使用 null 呢?這裡記錄幾個簡單的例子
在使用 distinct 時,null 也被視為一類資料,null 存在於多行中時,也會被合併為一條 null 的資料.
所有包含 null 的計算,結果必然是 null。如:
1)5 + null
2)1 * null
3)null / 0 (數字除以 0 會報錯,只有 null 除以 0 結果仍然是 0)
因為 null是不確定值,所以 sql 無法判斷其是否符合條件,故不會入選。如:
selectstudent_id,
student_name
from
studens
where
student_id
<>10;
若有同學的 student_id 為空(null),無法判斷是否為 10,所以改同學不會被取出(只會取出 sql 已知 student_id 不等於 10 的記錄)
null 的存在,會使 邏輯運算除了 true 與 false,增加第三種值:nuknown(不確定)
其中需要注意的情況是:
1)真 and 不確定:不確定
2)假 and 不確定:假
3)真 or 不確定:真
4)假 or 不確定:不確定
索引對查詢效率的影響
我們將利用advanturewords2008r2中的sales.salesorderdetail表,其中有12萬條資料,非常適合用於測試。不過我們不直接在這張表上做測試,因為這張表上已經有索引了。我們需要新建一張表,將該表中的資料匯入我們新建的test和test2表。test和test2的建立方法...
鏈結伺服器對查詢的影響
收集12小時的profiler跟蹤檔案,用rml分析檢視消耗前n的語句 上圖是某生產環境特定loginname,消耗前n的情況 按總cpu降序 藍色底紋的是幾個呼叫頻繁的過程,可以看到過程平均cpu在1000毫秒以上,平均執行時間在1.5秒左右,注意它們的平均邏輯讀很低!檢視儲存過程 發現有乙個共同...
mysql null和 的區別
平時我們在使用mysql的時候,對於mysql中的null值和空值區別不能很好的理解。注意到null值是未知的,且占用空間,不走索引,dba建議建表的時候最好設定欄位是not null 來避免這種低效率的事情的發生。create table test a int 11 not null,b varc...