1,當插入資料超過全表的10%的時候,要先除去索引,再插入,插入完了再將索引建立回去。
2,避免索引列上使用函式,否則本次查詢索引將失去作用,除非你加的是函式索引。
3,避免在索引列上使用not,!=這樣的條件,索引只能很快定位表中有什麼,否則它還是要全表掃瞄
4,索引列上用》=替代》
select * from table1 where d>=4 高校 select * from table1 where d>3 低效
5,在insert或update的時候,最好都加乙個條件,這個條件是之insert或update表中沒有的的資料
insert into table1 select * from table2 where table2.code not exists(table1.code)
6.oracle採用自下而上的順序解析where子句,根據這個原理,表之間的連線必須寫在其他where條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾.
7.當在sql語句中連線多個表時, 請使用表的別名並把別名字首於每個column上.這樣一來,就可以減少解析的時間並減少那些由column歧義引起的語法錯誤.
8.用exists替代in 高效 同理 not exists替代 not in
SQL經驗學習
寫一句sql語句找出沒有student的class select class.name from class left join student on class.id student.c id where student.name is null 對於class裡面的totalscore,計算規則...
sql經驗總結
最近正在做美女站,經常用到資料庫 1 選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle 的解析器按照從右到左的順序處理 from 子句中的表名,from 子句中寫在最後的表 基礎表 driving table 將被最先處理,在 from 子句中包含多個表的情況下,你必須選擇記錄條數最...
mybatis和sql經驗筆記
最近在做乙個小專案,之前涉及的是saas專案都是用mongodb,用spring data,所以封裝比較好,語句很少寫。之前的mybatis的語句也是比較簡單都是兩個表關聯把mysql的語句忘的七七八八。所以這次專案就把mysql的拿起來。1.limit 之前一直把limit理解錯了,就是limit...