日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我們公司的數據量非常大,需要的不僅僅是提取數據,要了解SQL方案優化的。一般在寫SQL時需要注意哪些問題,可以提高查詢的效率?

面試題:如何提高SQL查詢的效率

 

【解題思路】

數據量大的情況下,不同的SQL語句,消耗的時間相差很大。按下面方法可以提高查詢的效果。

1. select子句中盡量避免使用*

select子句中,*是選擇全部數據的意思。比如語句:“select * from 成績表”,意思是選擇成績表中所有列的數據。

在我們平時的練習中,往往沒有那么多數據,所以很多同學會圖方便使用*。而在處理公司事務時,動輒十萬、百萬,甚至上千萬的數據,這個時候再用*,那么接下來的幾分鐘就只能看著電腦屏幕發呆了。

所以,在我們平常的練習中,就要養成好的習慣,最后需要哪些列的數據,就提取哪些列的數據。盡量少用*來獲取數據。

另外,如果select * 用于多表聯結,會造成更大的成本開銷。

2. where子句比較符號左側避免函數

盡量避免在where條件子句中,比較符號的左側出現表達式、函數等操作。因為這會導致數據庫引擎進行全表掃描,從而增加運行時間。

舉個例子,下圖是10名學生的成績表,老師突然發現因為參考答案出錯,給所有人都少加了5分,現在需要查詢:給每人加5分后,成績依然在90分以上的同學的學號。

按照題目的思路直接書寫,“給每人加5分后,成績90分以上”的條件很多人會這樣寫:

where 成績 + 5 > 90 (表達式在比較符號的左側)

優化方法:

where 成績 > 90 – 5(表達式在比較符號的右側)

所以,為了提高效率,where子句中遇到函數或加減乘除的運算,應當將其移到比較符號的右側。

3. 盡量避免使用in和not in

in和not in也會導致數據庫進行全表搜索,增加運行時間。

比如,我想看看第8、9個人的學號和成績,大多數同學會用這個語句:

select 學號, 成績 from 成績表 where 學號 in (8, 9)

這一類語句,優化方法如下:

select 學號, 成績 from 成績表 where 學號 between 8 and 9

4. 盡量避免使用or

or同樣會導致數據庫進項全表搜索。在工作中,如果你只想用or從幾十萬語句中取幾條出來,是非常劃不來的,怎么辦呢?下面的方法可替代or。

從成績表中選出成績是是88分或89分學生的學號:

select 學號 from 成績表 where 成績 = 88 or 成績 = 89

優化后:

select 學號 from 成績表 where 成績 = 88

union

select 學號 from 成績表 where 成績 = 89

語句雖然變長了一點,但處理大量數據時,可以省下很多時間,是非常值得的。

5.使用limit子句限制返回的數據行數

如果前臺只需要顯示15行數據,而你的查詢結果集返回了1萬行,那么這適合最好使用limt子句來限制查詢返回的數據行數。

【本題考點】

在面試中,當面試官提出這一類問題,按照上述的方法進行回答都是沒有問題的,但不僅在面試中,平時練習就養成習慣是最好的。

大多數同學都會覺得“麻煩”、“不做也沒有什么影響”,但是習慣總是慢慢養成的。

擁有好習慣,未來在工作中,面對不同的數據量,就可以游刃有余地選擇不同的方法來降低完成時間,從而提升工作效率。

分享到:
標簽:查詢 SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定