2020最新国产在线不卡a-爱看女同中文字幕av-国产大秀视频在线一区二区-大香蕉手机在线最新视频

旗下品牌:
石家莊網(wǎng)站開發(fā) 石家莊網(wǎng)站開發(fā)公司

資訊動態(tài)

察而思、思而行、行而后語、知行合一

石家莊網(wǎng)站建設(shè)之網(wǎng)站數(shù)據(jù)庫優(yōu)化

發(fā)布時間:2018-10-12 熱度:

 

    隨著石家莊網(wǎng)站建設(shè)網(wǎng)站的使用時間越來越久,網(wǎng)站數(shù)據(jù)的存儲量越來越大,服務(wù)器的性能需要更好地去優(yōu)化,才能保證網(wǎng)站更優(yōu)秀地運(yùn)行。近日,我們在網(wǎng)上找了好多關(guān)于SQL優(yōu)化的教程,感覺這篇教程講的很詳細(xì),效果更為明顯?,F(xiàn)在推薦給大家,大家一起學(xué)習(xí),一起進(jìn)步。

 

 

 

    網(wǎng)上關(guān)于數(shù)據(jù)庫優(yōu)化的教程有很多,但是又多又亂的。最近因?yàn)榉?wù)器需要優(yōu)化一下,所以從網(wǎng)上整理了一些,寫出來跟大家分享一下,有什么不對和不足的地方,還請大家糾正補(bǔ)充。這篇文章我花費(fèi)了大量的時間查找資料、修改、排版,希望大家閱讀之后,感覺好的話推薦給更多的人,讓更多的人看到、學(xué)習(xí)、糾正補(bǔ)充。

     1.盡量避免在 where 子句中使用 or 來連接條件,如果一個字段有索引,一個字段沒有索引,將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:

 

select id from t where num=10 or Name = 'admin'

 

可以這樣查詢:

 

select id from t where num = 10

union all

select id from t where Name = 'admin'

     2.盡量避免在 where 子句中對字段進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:

 

select id from t where num is null

    

   最好不要給數(shù)據(jù)庫留NULL,盡可能的使用 NOT NULL填充數(shù)據(jù)庫.

 

    備注、描述、評論之類的不重要的可以設(shè)置為 NULL,其他的,最好不要使用NULL。不要以為 NULL 不需要占用空間,比如:char(100) 型,在字段建立時,空間就固定了, 不管是不是插入值(NULL也包含在內(nèi)),都是占用 100個字符的空間的,如果是varchar這樣的變長字段, null 不占用空間??梢栽?/font>num上設(shè)置默認(rèn)值0,確保表中num列沒有null值,然后這樣查詢:

 

select id from t where num = 0

    

    3.應(yīng)盡量避免在 where 子句中使用 != <> 操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描。

 

    4.適當(dāng)?shù)臅r候應(yīng)該考慮在 where order by 涉及的列上建立索引。以提高查詢速度。

 

    5.下面的查詢也會導(dǎo)致全表掃描:

 

select id from t where name like ‘%abc%

  

   若要提高效率,可以考慮全文檢索的哦。

6.in not in 也要慎用,否則也會導(dǎo)致全表掃描。

 

      7.應(yīng)盡量避免在where子句中對字段進(jìn)行函數(shù)操作,這將導(dǎo)致引擎放棄使用索引,而進(jìn)行全表掃描。如:

 

select id from t where substring(name,1,3) = ’abc’       -–nameabc開頭的id

select id from t where datediff(day,createdate,’2005-11-30′) = 0    -–‘2005-11-30’    --生成的id

   

    應(yīng)改為:

 

select id from t where name like 'abc%'

select id from t where createdate >= '2005-11-30' and createdate < '2005-12-1'

 

      8.假如 where 語句中使用參數(shù),也會導(dǎo)致全表掃描。因?yàn)?/font>SQL只有在石家莊網(wǎng)站建設(shè)運(yùn)行時才會解析局部變量,但優(yōu)化程序不能將訪問計(jì)劃的選擇推遲到運(yùn)行時;它必須在編譯時進(jìn)行選擇。然而,如果在編譯的時候建立訪問計(jì)劃,變量的值還是未知的,因而無法作為索引選擇的輸入項(xiàng)。比如下面的語句將會進(jìn)行全表掃描:

 

select id from t where num = @num

  

    可以改為強(qiáng)制查詢使用索引:

 

select id from t with(index(索引名)) where num = @num

  

    應(yīng)盡量避免在 where 子句中對字段進(jìn)行表達(dá)式操作,這會使引擎放棄使用索引而進(jìn)行全表掃描。如:

 

select id from t where num/2 = 100

    應(yīng)改為:

 

select id from t where num = 100*2

  

    好了,就到這里吧。預(yù)知后事如何,請聽下回分解。后面有時間會介紹一些SQL優(yōu)化工具給大家。石家莊網(wǎng)站建設(shè)同您一起學(xué)習(xí),一起進(jìn)步! 

 

 

聯(lián)系尚武科技
客戶服務(wù)
石家莊APP開發(fā)
400-666-4864
為您提供售前購買咨詢、解決方案推薦等1V1服務(wù)!
技術(shù)支持及售后
石家莊APP開發(fā)公司
0311-66682288
為您提供從產(chǎn)品到服務(wù)的全面技術(shù)支持 !
客戶服務(wù)
石家莊小程序開發(fā)
石家莊小程序開發(fā)公司
加我企業(yè)微信
為您提供售前購買咨詢、
解決方案推薦等1V1服務(wù)!
石家莊網(wǎng)站建設(shè)公司
咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系。
石家莊網(wǎng)站制作
在線聯(lián)系:
石家莊Web開發(fā)
石家莊軟件開發(fā)
石家莊軟件開發(fā)公司
ADD/地址:
河北·石家莊
新華區(qū)西三莊大街86號河北互聯(lián)網(wǎng)大廈B座二層
Copyright ? 2008-2025尚武科技 保留所有權(quán)利。 冀ICP備12011207號-2 石家莊網(wǎng)站開發(fā)冀公網(wǎng)安備 13010502001294號《互聯(lián)網(wǎng)平臺公約協(xié)議》
Copyright ? 2025 dachencms.com, Inc. All rights reserved