1. mysql中索引什麼作用?索引的定義和建立的目的
1) 索引是對資料庫表中一列或者多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊
2) 索引的分類:主鍵索引,唯一索引,常規索引,全文索引
3) 建立索引的目的就是加快檢索表中的資料的速度,也就是查詢資料的速度
索引是越多越好嗎
1) 不是,索引過多的建立,會帶來資料的寫入的代價過高,即減慢資料寫入速度
索引的建立為什麼會影響寫入的速度?
1) myisam引擎:資料的儲存分為三個檔案
* table.frm 儲存表定義
* table.myd 儲存表資料
* table.myi 儲存表索引
2) innodb引擎:儲存方式
* 共享表空間:乙個表中資料可以橫跨多個檔案
* 單獨表空間:檔案1,是表1的資料.檔案2,是表2的資料
3) 答案:索引也是存在檔案中的,索引也是一中資料也需要寫到磁碟上,索引越多代表資料量越大,寫入的時候可能伴隨索引資料更新.
索引是如何工作的:
1) myisam引擎:看書場景:檢視目錄-->找到內容,因為有單獨的檔案儲存索引,先找到索引在**myi,然後再找資料在**myd
2) innodb引擎:逛超市場景:尋找區域-->即找到內容
mysql中儲存引擎的區別
myisam引擎
1) 在進行資料的備份,遷移,恢復等操作時,非常容易,只要對檔案進行操作就可以
2) 只支援表鎖,沒有行鎖
3) 不支援事物安全,但每次讀的操作是就有原子性的,所以不必擔心髒讀等情況
innodb引擎
1) 支援事物,回滾,崩潰修復,所以對資料安全性較高的業務場景都選擇了這個引擎
2) 支援行級鎖,行級鎖的支援大大提高了資料庫的併發操作能力
3) 支援外來鍵約束,在mysql中,只有innodb支援外來鍵,在正規化設計原則下,外來鍵約束保證了資料的完整性
2. 如何分析一條查詢sql的效率?
如何進行sql優化
1) 執行計畫:explain
用法:explain
面試題 資料庫
今天面試,遇到資料庫方面的問題,由於好久沒接觸過,很多都忘記了,回來查了資料,整理一下 1 觸發器與儲存過程的區別 觸發器 是一種特殊型別的儲存過程,當使用下面的一種或多種資料修改操作在指定表中對資料進行修改時,觸發器會生效 update insert 或 delete。觸發器可以查詢其它表,而且可...
資料庫 面試題
正規化 第一正規化 1nf 所謂第一正規化 1nf 是指在關係模型中,所有的域都應該是原子性的,而不能是集合 陣列 記錄等非原子資料項。第二正規化 2nf 在1nf基礎上消除非主屬性對主碼的部分函式依賴。第三正規化 3nf 在2nf基礎上消除非主屬性對主碼的傳遞函式依賴。巴斯 科德正規化 bcnf ...
資料庫面試題
這個主要是給自己看的,答案都是網上搜的 乙個叫department的表,裡面只有乙個字段 name 一共有4條紀錄,分別是a,b,c,d,對應四個球對,現在四個球對進行比賽,用一條sql語句顯示所有可能的比賽組合 select a.name,b.name fromdepartment a,depar...