您好,登錄后才能下訂單哦!
一些優(yōu)化建議:
1、SELECT語句執(zhí)行性能,可以通過explain語句來查看;
2、數(shù)據(jù)庫對象存儲(chǔ)過程比單條執(zhí)行語句速度快;
3、減少select * 出現(xiàn)的頻率;
4、索引可以加速數(shù)據(jù)查詢,但對于不是經(jīng)常查找的字段或表,最好不要建立索引;
5、LIKE關(guān)鍵字執(zhí)行效率低,一般通過“FULL TEXT”代替;
6、應(yīng)盡量避免在 where 子句中使用 or 來連接條件,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,這樣不符合優(yōu)化原則,如:
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 也要慎用,否則會(huì)導(dǎo)致全表掃描,如:
select id from t where num in(1,2,3);
8、對于連續(xù)的數(shù)值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3;
9、很多時(shí)候用 exists 代替 in 是一個(gè)好的選擇。
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、盡量使用數(shù)字型字段,若只含數(shù)值信息的字段盡量不要設(shè)計(jì)為字符型,這會(huì)降低查詢和連接的性能,并會(huì)增加存儲(chǔ)開銷。這是因?yàn)橐嬖谔幚聿樵兒瓦B接時(shí)會(huì)逐個(gè)比較字符串中每一個(gè)字符,而對于數(shù)字型而言只需要比較一次就夠了。
11、盡可能的使用 varchar/nvarchar 代替 char/nchar ,因?yàn)槭紫茸冮L字段存儲(chǔ)空間小,可以節(jié)省存儲(chǔ)空間,其次對于查詢來說,在一個(gè)相對較小的字段內(nèi)搜索效率顯然要高些。
12、避免頻繁創(chuàng)建和刪除臨時(shí)表,以減少系統(tǒng)表資源的消耗。
13、在新建臨時(shí)表時(shí),如果一次性插入數(shù)據(jù)量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果數(shù)據(jù)量不大,為了緩和系統(tǒng)表的資源,應(yīng)先create table,然后insert。
14、盡量避免使用游標(biāo),因?yàn)橛螛?biāo)的效率較差,如果游標(biāo)操作的數(shù)據(jù)超過1萬行,那么就應(yīng)該考慮改寫。
15、盡量避免向客戶端返回大數(shù)據(jù)量,若數(shù)據(jù)量過大,應(yīng)該考慮相應(yīng)需求是否合理。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。