面試題 如何設計乙個關係型資料庫 和索引相關

2021-09-24 19:53:15 字數 1345 閱讀 7921

1、首先要明白無名無實莫要用索引:因為資料中的記錄很多,為了方便我們查詢,提高查詢的效率;

2、索引的原理:對要查詢的字段建立索引其實就是把該字段按照一定的方式排序;建立的索引只對該字段有用,如果查詢的字段改變,那麼這個索引也就無效了,比如圖書館的書是按照書名的第乙個字母排序的,那麼你想要找作者叫張三的就不能用改索引了;還有就是如果索引太多會降低查詢的速度

3、索引是優缺點: 首先明白為什麼索引會增加速度,db在執行一條sql語句的時候,預設的方式是根據搜尋條件進行全表掃瞄,遇到匹配條件的就加入搜尋結果集合。如果我們對某一欄位增加索引,查詢時就會先去索引列表中一次定位到特定值的行數,大大減少遍歷匹配的行數,所以能明顯增加查詢的速度。那麼在任何時候都應該加索引麼?這裡有幾個反例:1、如果每次都需要取到所有表記錄,無論如何都必須進行全表掃瞄了,那麼是否加索引也沒有意義了。2、對非唯一的字段,例如「性別」這種大量重複值的字段,增加索引也沒有什麼意義。3、對於記錄比較少的表,增加索引不會帶來速度的優化反而浪費了儲存空間,因為索引是需要儲存空間的,而且有個致命缺點是對於update/insert/delete的每次執行,欄位的索引都必須重新計算更新。所以並不是任何情況下都改建立索引的

一、為什麼要建立索引呢(優點)?

這是因為,建立索引可以大大提高系統的效能。

第一, 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

第二, 可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。

第三, 可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

第四, 在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

第五, 通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

二、建立方向索引的不利因素(缺點)

也許會有人要問:增加索引有如此多的優點,為什麼不對錶中的每乙個列建立乙個索引呢?這種想法固然有其合理性,然而也有其片面性。雖然,索引有許多優點,但是,為表中的每乙個列都增加索引,是非常不明智的。這是因為,增加索引也有許多不利的乙個方面。

第一, 建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。

第二, 索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。

第三, 當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。

如何設計乙個關係型資料庫(鎖,索引)

目錄 一.為什麼要使用索引?二.什麼樣的資訊能成為索引?三.索引的資料結構?關於鎖1.myisam和innodb關於鎖方面的區別是什麼?2.資料庫事務的四大特性 3.事務隔離級別以及各級別下的併發訪問問題 4.inodb可重複讀隔離級別下如何避免幻讀?5.rc rr級別下的innodb的非阻塞讀如何...

如何建立乙個關係型資料庫

這是乙個容易讓人懵掉的題目,及其容易引發面試的 其實不必慌張,設計一款資料庫就跟設計一款軟體差不多,要將其劃分為多個模組,這道面試題就是為了考察模組劃分能力以及對資料庫的了解。首先要先知道關係型資料庫的組成 對資料庫進行劃分 一 儲存 檔案系統 資料庫的最主要功能,用來儲存資料,類似os檔案系統,將...

面試題解答系列 關係型資料庫和非關係型資料的比較

一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表以及多個表之間非常複雜的查詢。缺點 1 讀寫效能比較差,尤其是海量資料的高...