10道MySQL常見面試題

2021-09-25 14:50:05 字數 1370 閱讀 5040

1、mysql索引種類

1.普通索引 2.唯一索引 3.主鍵索引 4.組合索引 5.全文索引

2、索引在什麼情況下遵循最左字首的規則?

最左字首原理的一部分,索引index1:(a,b,c),只會走a、a,b、a,b,c 三種型別的查詢,其實這裡說的有一點問題,a,c也走,但是只走a欄位索引,不會走c欄位。

索引是有序的,index1索引在索引檔案中的排列是有序的,首先根據a來排序,然後才是根據b來排序,最後是根據c來排序,

3、主鍵和外來鍵的區別?

主鍵:唯一標識一條記錄,不能有重複的,不允許為空

外來鍵:表的外來鍵是另一表的主鍵, 外來鍵可以有重複的, 可以是空值

4、mysql常見的函式?

sum 、 count 、 abs...

5、在對name做了唯一索引前提下,簡述以下區別:

答:過濾出資料的同時,進行計數

6、1000w條資料,使用limit offset 分頁時,為什麼越往後翻越慢?如何解決?

答: 先查主鍵,在分頁。 select * from tb where id in(select id from tb where limit 10 offset 20)

7、什麼是索引合併?

答:索引合併,讓一條sql可以使用多個索引。對這些索引取交集,並集,或者先取交集再取並集。從而減少從資料表中取資料的次數,提高查詢效率。

8、什麼是覆蓋索引?

答:如果乙個索引包含(或覆蓋)所有需要查詢的字段的值,稱為『覆蓋索引』

9、簡述資料庫讀寫分離?

答:主伺服器master記錄資料庫操作日誌到binary log,從伺服器開啟i/o執行緒將二進位制日誌記錄的操作同步到relay log(存在從伺服器的快取中),另外sql執行緒將relay log日誌記錄的操作在從伺服器執行。 

10、簡述資料庫分庫分表?(水平、垂直)

答:(1)資料庫分表

把一張表按照一定的規則分解成不同的實體表。比如垂直劃分和水平劃分

垂直切分:把不同功能,不同模組的資料分別放到不同的表中,但是如果同乙個模組的資料量太大就會存在效能瓶頸

水平切分:垂直切分解決不了大表的瓶頸,如果同乙個功能中表的資料量過大,就要對該錶進行切分,為水平切分

通俗理解:垂直切分---分不同的模組表;水平切分---分同乙個模組下的多個表

(2)分庫

將一堆資料放到不同的資料庫中儲存,上面說的都是在同乙個資料庫上,分庫是分到不同的資料庫上

Mysql常見面試題

參考博文 innodb引擎中的索引型別 聚集索引 每張表都會他們的主鍵建立一顆b 樹索引,並且在葉子節點上會存放對應主鍵的行記錄。輔助索引 非聚集索引 對非主鍵列建立的b 樹索引,葉子節點存放了索引值和書籤,這個書籤就是對應的主鍵值。那之後可以通過這個主鍵值找到對應的行記錄。聯合索引 對兩個或者兩個...

mysql常見面試題

索引是一種資料結構,使用索引可以提高查詢效率。1.hash索引 2.b 樹索引 1.hash索引查詢更快,使用hash函式一次查詢,但是無法進行範圍查詢,不支援排序 2.b 樹索引有logn級別的查詢速度,支援範圍查詢,支援排序 1.大資料量 2.頻繁使用字段 一組sql語句,要麼同時成功,要麼同時...

mysql常見面試題

1.資料庫的儲存引擎有哪些?myisam與innodb的區別?2.三正規化指的是哪三正規化?3.什麼是事物?有那些特點?事物的隔離級別有那些?mysql的預設隔離級別有哪些?4.髒讀 幻讀 不可重複讀指的是什麼?5.資料庫優化 5.1 什麼是資料庫索引?資料庫索引有哪些型別?5.2 資料庫索引b t...