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


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)使用 關鍵字 inor ,null,!=

9. sql優化您們是怎么做的?
一.首先開啟數據庫慢查詢日志,定位到查詢效率比較低的sql , 找出對應的sql語句並進行分析
1.表設計是否規范,是否符合三范式的標准
(1)第一范式:保證原子性(不可拆分)
(2)第二范式:每張表都有主鍵
(3)第三范式(每一列都有主鍵相關)
2.查看數據表中是否存在大量的冗余字段,字段數據類型是否合理
3.盡可能的使用varchar代替char 建表數據類型,能用數值的絕對不用字符存儲
4.盡量避免null值,使用默認值替代空值,數值型可以使用0,字符型可以使用空字符串

二.查看sql語句是否規范
(1)避免使用關鍵字:orinnot in ,!=,<>,避免使用select *2)盡量避免子查詢,大部分子查詢都可以連接查詢
(3)用到or的地方可以使用union去代替實現
(4)用到in的地方可以使用exists去代替

三.分析sql的索引是否可以用上
(1) explain查詢sql的執行計划,重點關注的幾個列就是,type是不是全表掃描
(2)看一下索引是否能夠用的上,主要看key使用的是哪個索引
(3)看一下rows掃描行數是不是很大

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM