1、where子句中可以對(duì)字段進(jìn)行null值判斷嗎?
可以,比如 select id from t where num is null 這樣的sql也是可以的。但是最好不要給數(shù)據(jù)庫(kù)留NULL,盡可能的使用NOT NULL填充數(shù)據(jù)庫(kù)。不要以為NULL不需要空間,比如:char(100) 型,在字段建立時(shí),空間就固定了,不管是否插入值(NULL 也包含在內(nèi)),都是占用100個(gè)字符的空間的,如果是varchar 這樣的變長(zhǎng)字段,null 不占用空間??梢栽趎um上設(shè)置默認(rèn)值0,確保表中num列沒(méi)有null值,然后這樣查詢:select id from t where num= 0。
優(yōu) 化 為 : select * from (select * from admin where admin_id>10) T1 left join log on T1.admin_id =log.admin_id。使用 JOIN 時(shí)候,應(yīng)該用小的結(jié)果驅(qū)動(dòng)大的結(jié)果(left join 左邊表結(jié)果盡量小如果有條件應(yīng)該放到左邊先處理, right join同理反向),同時(shí)盡量把牽涉到多表聯(lián)合的查詢拆分多個(gè) query(多個(gè)連表查詢效率低,容易到之后鎖表和阻塞)。
例如
select * from admin order by admin_id limit 100000,10
優(yōu)化為
select * from admin where admin_time> '2014-01-01′