面試造火箭,工作擰螺絲,雖然工作時我們都在使用基本的 sql,但是不好意思,面試 90% 都在問原理,例如索引,鎖,日志,引擎啊等等。
在關系數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
如果我們想在圖書中查找特定內容,在沒有目錄的情況下只能逐頁翻找。與此類似,當執行下面這樣一條SQL語句時,假如沒有索引,數據庫如何查找到相對應的記錄呢?
SELECT * FROM student WHERE name=‘小白’
1
復制代碼類型:[javascript]
搜索引擎只能掃描整個表的每一行,并依次對比判斷name的值是否等于“小白”。我們知道,單純的內存運算是很快的,但從磁盤中取數據到內存中是相對慢的,當表中有大量數據時,內存與磁盤交互次數大大增加,這就導致了查詢效率低下。
索引的優點如下:
索引失效?通過創建唯一索引可以保證數據庫表中每一行數據的唯一性。
可以大大加快數據的查詢速度,這是使用索引最主要的原因。
在實現數據的參考完整性方面可以加速表與表之間的連接。
在使用分組和排序子句進行數據查詢時也可以顯著減少查詢中分組和排序的時間。
既然索引這么好,那么我們是不是盡情使用索引呢?非也,索引優點明顯,但相對應,也有缺點:
創建和維護索引組要耗費時間,并且隨著數據量的增加所耗費的時間也會增加。
MySQL索引、索引需要占磁盤空間,除了數據表占數據空間以外,每一個索引還要占一定的物理空間。
當對表中的數據進行增加、刪除和修改的時候,索引也要動態維護,這樣就降低了數據的維護速度。
因此,使用索引時要兼顧索引的優缺點,尋找一個最有利的平衡點。
面試領取Java面試題
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态