鍍金池/ 問(wèn)答/Java  數(shù)據(jù)庫(kù)/ 關(guān)于java程序員在面試中的數(shù)據(jù)庫(kù)查詢優(yōu)化問(wèn)題

關(guān)于java程序員在面試中的數(shù)據(jù)庫(kù)查詢優(yōu)化問(wèn)題

背景:
1.本人java程序員
2.最近在面試高級(jí)開發(fā)崗位
3.之前項(xiàng)目主要用的oracle,mysql用的較少,面試的公司基本是使用mysql的
4.本人在數(shù)據(jù)庫(kù)比較薄弱的
5.最近在看《高性能mysql》
6.不僅是面試的問(wèn)題,自己也想在這方面有所提高
--------分割線----------------
問(wèn)題:
在面試中都會(huì)問(wèn)到數(shù)據(jù)庫(kù)查詢優(yōu)化和數(shù)據(jù)庫(kù)整體優(yōu)化的相關(guān)問(wèn)題。

我在面試中的回答:
1.select少用*,只使用需要使用的字段
2.盡量少使用關(guān)聯(lián)查詢,適當(dāng)?shù)膶?duì)一些字段進(jìn)行數(shù)據(jù)冗余
3.對(duì)一些最常用查詢字段,可以考慮使用索引(面試官一般也會(huì)問(wèn)下有哪些索引類型,索引的數(shù)據(jù)結(jié)構(gòu)B樹,索引失效等問(wèn)題)
4.mysql可以使用explain,檢查sql的查詢性能,通過(guò)key可以看到查詢使用到的索引,type看到是全表掃描還是索引掃描等,盡量使sql通過(guò)索引查詢

所以想問(wèn)問(wèn)大家,我的回答有哪些問(wèn)題,可以從哪些方面回答,有哪些可以學(xué)習(xí)的方向?

回答
編輯回答
萌吟

1.分表. 行分表和列分表.
2.索引. 單索引和組合索引
3.sql語(yǔ)句優(yōu)化.
mysql優(yōu)化就從這三方面優(yōu)化.

2018年3月31日 14:21
編輯回答
編輯回答
毀憶

整體優(yōu)化,需考慮 磁盤選擇(機(jī)械、固態(tài))、mysql關(guān)鍵參數(shù)(buffer pool,事務(wù)日志寫方式等)、存儲(chǔ)引擎、分庫(kù)分表、讀寫分離、慢查詢?nèi)罩镜取?/p>

sql語(yǔ)句方面,主要就是索引、批量插入、執(zhí)行計(jì)劃和HINTS、表關(guān)聯(lián)個(gè)數(shù)限制、等價(jià)重寫等。
統(tǒng)計(jì)類型的數(shù)據(jù),可以考慮定時(shí)計(jì)算好結(jié)果,用空間換時(shí)間。

以上內(nèi)容,大部分在《高性能mysql》這本書上都提到過(guò),值得認(rèn)真讀、實(shí)踐驗(yàn)證。

2017年4月21日 08:08