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...