想必小伙伴們面試度時候,都被問過SQL優化吧?然鵝實際上工作中,這個點大部分人接觸的很少,加上面試本來就有點緊張,導致很多人,只能想到一點點,甚至一臉懵圈,那么面試度時候遇到這個問題應該怎么回答呢?
下面我就來說說我的看法:
(1)最重要的是盡量避免全表掃描”
(2)適當的創建索引,考慮在 where 及 order by 涉及的列上建立索引(把所建的索引所用列名,用在where語句中,並盡量在條件的最右邊,索引相關知識:https://www.jianshu.com/p/f588c41f1cb5)
(3)盡量避免在 where 子句中對字段進行 null 值判斷、使用!=或<>操作符、使用 or 來連接條件、對字段進行函數操作等
(4)in 和 not in 也要慎用,否則可能會導致全表掃描
(5)很多時候用 exists 代替 in 是一個好的選擇
(6)盡量使用數字型字段,若只含數值信息的字段盡量不要設計為字符型,這會降低查詢和連接的性能,並會增加存儲開銷。
(7)盡可能的使用 varchar 代替 char ,因為首先變長字段存儲空間小,可以節省存儲空間,其次對於查詢來說,在一個相對較小的字段內搜索效率顯然要高些。
(8)把條件最小的寫在最右邊,如果id=?寫在最右邊
(9)盡量少寫子查詢,用join語句代替,少寫in,like,or