您好,登錄后才能下訂單哦!
一些優化建議:
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、盡量避免向客戶端返回大數據量,若數據量過大,應該考慮相應需求是否合理。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。