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