016—優化

一些優化建議:


1、SELECT語句執行性能,可以通過explain語句來查看;

2、數據庫對象存儲過程比單條執行語句速度快;

3、減少select * 出現的頻率;

4、索引可以加速數據查詢,但對於不是經常查找的字段或表,最好不要建立索引;

5、LIKE關鍵字執行效率低,一般通過“FULL TEXT”代替;

6、應儘量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,這樣不符合優化原則,如: 

select id from t where num=10 or num=20;

可以這樣查詢:

select id from t where num=10
union all
select id from t where num=20;

7、in 和 not in 也要慎用,否則會導致全表掃描,如:

select id from t where num in(1,2,3);

8、對於連續的數值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3;

9、很多時候用 exists 代替 in 是一個好的選擇。 

select num from a where num in(select num from b);

用下面的語句替換:

select num from a where exists(select 1 from b where num=a.num);

10、儘量使用數字型字段,若只含數值信息的字段儘量不要設計爲字符型,這會降低查詢和連接的性能,並會增加存儲開銷。這是因爲引擎在處理查詢和連接時會逐個比較字符串中每一個字符,而對於數字型而言只需要比較一次就夠了。

 

11、儘可能的使用 varchar/nvarchar 代替 char/nchar ,因爲首先變長字段存儲空間小,可以節省存儲空間,其次對於查詢來說,在一個相對較小的字段內搜索效率顯然要高些。

 

12、避免頻繁創建和刪除臨時表,以減少系統表資源的消耗。

 

13、在新建臨時表時,如果一次性插入數據量很大,那麼可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果數據量不大,爲了緩和系統表的資源,應先create table,然後insert。 


14、儘量避免使用遊標,因爲遊標的效率較差,如果遊標操作的數據超過1萬行,那麼就應該考慮改寫。


15、儘量避免向客戶端返回大數據量,若數據量過大,應該考慮相應需求是否合理。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章