sql優化和索引常見的面試題 面試總結

2021-09-26 10:15:26 字數 1407 閱讀 3154

1.什麼是索引

索引指資料庫的目錄,比如:字典上面的字母目錄 (適用於大資料量)

2.建立索引的優缺點

優點:查詢速度快

缺點:增刪改慢,因為資料庫要同步去維護索引檔案,所以速度慢

3.索引有哪些

普通 主鍵 唯一 組合

4. 索引檢索為什麼快

索引結構:b+tree

5.一般你們會在什麼情況下加索引

(1)主鍵自動建立唯一索引

(2)頻繁作為查詢條件的字段應該建立索引

(3)查詢中與其他表關聯的字段,外來鍵關係建立索引

(4)單鍵/組合索引的選擇問題,組合索引的價效比更高

(5)查詢中排序的字段,排序欄位若通過索引去訪問將大大提高排序速度

(6)查詢中統計或者分組字段。

(7)過濾條件好的字段選擇一段選擇加索引

6.怎麼知道索引用沒用上

通過explain查詢sql執行計畫,主要看key使用的是哪個索引

7.用過組合索引嗎,是有序的嗎

用過,有序

8.什麼情況下會使索引失效?

(1)like

(2)like 「%123%,前面不能+%

(3)使用 關鍵字 in ,or ,null,!=

9. sql優化您們是怎麼做的?

一.首先開啟資料庫慢查詢日誌,定位到查詢效率比較低的sql , 找出對應的sql語句並進行分析

1.表設計是否規範,是否符合三正規化的標準

(1)第一正規化:保證原子性(不可拆分)

(2)第二正規化:每張表都有主鍵

(3)第三正規化(每一列都有主鍵相關)

2.檢視資料表中是否存在大量的冗餘字段,字段資料型別是否合理

3.盡可能的使用varchar代替char 建表資料型別,能用數值的絕對不用字元儲存

4.盡量避免null值,使用預設值替代空值,數值型可以使用0,字元型可以使用空字串

二.檢視sql語句是否規範

(1)避免使用關鍵字:or ,in,not in ,!=,<>,避免使用select *

(2)盡量避免子查詢,大部分子查詢都可以連線查詢

(3)用到or的地方可以使用union去代替實現

(4)用到in的地方可以使用exists去代替

三.分析sql的索引是否可以用上

(1) explain查詢sql的執行計畫,重點關注的幾個列就是,type是不是全表掃瞄

(2)看一下索引是否能夠用的上,主要看key使用的是哪個索引

(3)看一下rows掃瞄行數是不是很大

常見的SQL優化面試題

1.在表中建立索引,優先考慮 where group by 使用到的字段 2.查詢時盡量避免使用select 只查詢需要用到的字段 3.避免在where子句中使用關鍵字兩邊都是 的模糊查詢,盡量在關鍵字後使用模糊查詢 4.盡量避免在where子句中使用in 和not in 優化 能使用between...

常見的SQL優化面試題

1.在表中建立索引,優先考慮where.group by使用到的字段。2.查詢條件中,一定不要使用select 因為會返回過多無用的字段會降低查詢效率。應該使用具體的字段代替 只返回使用到的字段。3.不要在where條件中使用左右兩邊都是 的like模糊查詢,如 select from t orde...

SQL優化 面試題

因為現在面試經常需要問的需要sql優化,問的具體操作步驟時候的常見做法,所以網上總結這些操作步驟 sql優化的具體操作 1 在表中建立索引,優先考慮where group by使用到的字段。2 盡量避免使用select 返回無用的字段會降低查詢效率。如下 select from t 優化方式 使用具...