- 相關(guān)推薦
關(guān)于語(yǔ)句的優(yōu)化面試試題參考
作為一個(gè)互聯(lián)網(wǎng)開發(fā)工程師,數(shù)據(jù)庫(kù)的知識(shí)是必不可少的,要是寫幾條查詢效率很差的SQL,當(dāng)數(shù)據(jù)庫(kù)的數(shù)據(jù)到達(dá)一定級(jí)別以后,沒幾個(gè)人同時(shí)訪問你的網(wǎng) 站,就能把你的一臺(tái)服務(wù)器高掛啦!【個(gè)人認(rèn)為:最為簡(jiǎn)單的測(cè)試方法就是把SQL語(yǔ)句在命令行下運(yùn)行,若查詢的語(yǔ)句需要0.03秒以上的SQL語(yǔ)句都需要優(yōu) 化。】
如下的大多都來自網(wǎng)絡(luò):終歸起來、都是一些簡(jiǎn)單SQL優(yōu)化,不敢保證這說法絕對(duì)的權(quán)威哦。phpma
1、用程序中,保證在實(shí)現(xiàn)功能的基礎(chǔ)上,盡量減少對(duì)數(shù)據(jù)庫(kù)的訪問次數(shù);通過搜索參數(shù),盡量減少對(duì)表的訪問行數(shù),最小化結(jié)果集,從而減輕網(wǎng)絡(luò)負(fù)擔(dān);能 夠分開的操作盡量分開處理,提高每次的響應(yīng)速度;在數(shù)據(jù)窗口使用SQL時(shí),盡量把使用的索引放在選擇的首列;算法的結(jié)構(gòu)盡量簡(jiǎn)單;在查詢時(shí),不要過多地使 用通配符如SELECT * FROM T1語(yǔ)句,要用到幾列就選擇幾列如:SELECT COL1,COL2 FROM T1;在可能的情況下盡量限制盡量結(jié)果集行數(shù)如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因?yàn)槟承┣闆r下用戶是不需要那么多的數(shù)據(jù)的。不要在應(yīng)用中使用數(shù)據(jù)庫(kù)游標(biāo),游標(biāo)是非常有用的工具,但比使用常規(guī)的、面向集的SQL語(yǔ)句需要更大的開 銷;按照特定順序提取數(shù)據(jù)的查找。
2、避免使用不兼容的數(shù)據(jù)類型。例如float和int、char和varchar、binary和varbinary是不兼容的。數(shù)據(jù)類型的不兼容可能使優(yōu)化器無法執(zhí)行一些本來可以進(jìn)行的優(yōu)化操作。例如:SELECT name FROM employee