mysql索引
索引優化mysql
1.什麼是索引?
索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。sql
2.做用是什麼?
索引的做用至關於圖書的目錄,能夠根據目錄中的頁碼快速找到所需的內容,提升性能(查詢速度)。數據庫
3.如何設置索引?
create [unique] index 索引名
on 表名稱 (字段名[(長度)]);
//unique 惟一性 不容許具備索引值相同的行,從而禁止重複的索引或鍵值
4.刪除索引
drop index 索引名 on 表名稱;性能
5.索引和普通查詢的區別?優化
好比,查詢一個學校全部學生的成績,將不及格的學生姓名和成績顯示下來。spa
普通查詢方法:
select name,[成績字段] from [表名] where [成績字段]<60;排序
查詢的過程:
數據庫將全部學生的成績所有查詢一遍,將不及格的學生顯示出來。
數據量小看不出區別,若是數據量達到百萬,須要將全部學成所有查出,耗時很是大。索引
索引查詢:
首先創建一個索引,create index 索引名 on 表名(成績字段); 若是數據多,建立索引時會消耗大量時間,和內存。
再次查詢select name,(成績字段) from (表名) where 成績字段<60;內存
查詢過程:
索引將表中的數據排序,查詢時列表有成績10,30,60,70,100。
查詢時,查到60的時候,將再也不向後查詢。節省時間。class
普通索引(INDEX),主鍵索引(PRIMARY),全文索引()和惟一索引(UNIQUE)有什麼區別?
惟一性索引:這種索引和「普通索引」基本相同,但有一個區別:索引列的全部值都只能出現一次,即必須惟一
補充:
索引是如何排序的?
數字索引:默認升序排序
文字索引:根據ASCII,漢字的機內碼(不懂的問度娘)
多列索引:
查詢條件是兩條,多列索引比單列索引
建立索引:
1.常常須要搜索的列上,能夠加快搜索的速度;
2.做爲主鍵的列上,強制該列的惟一性和組織表中數據的排列結構;
3.常常用在鏈接的列上,這些列主要是一些外鍵,能夠加快鏈接的速度;
4.常常須要根據範圍進行搜索的列上建立索引,由於索引已經排序,其指定的範圍是連續的;
5.常常須要排序的列上創 建索引,由於索引已經排序,這樣查詢能夠利用索引的排序,加快排序查詢時間;
6.常常使用在WHERE子句中的列上面建立索引,加快條件的判斷速度。
索引的優缺點?
優勢:
1.經過建立惟一性索引,能夠保證數據庫表中每一行數據的惟一性。
2.能夠大大加快數據的檢索速度,這也是建立索引的最主要的緣由。
3.能夠加速表和表之間的鏈接,特別是在實現數據的參考完整性方面特別有意義。
4.在使用分組和排序子句進行數據檢索時,一樣能夠顯著減小查詢中分組和排序的時間。
5.經過使用索引,能夠在查詢的過程當中,使用優化隱藏器,提升系統的性能。
缺點:
1.建立索引和維護索引要耗費時間,這種時間隨着數據量的增長而增長。
2.索引須要佔物理空間,除了數據表佔數據空間以外,每個索引還要佔必定的物理空間,若是要創建彙集索引那麼須要的空間就會更大。
3.當對錶中的數據進行增長、刪除和修改的時候,索引也要動態的維護,這樣就下降了數據的維護速度。
由於索引很是佔內存,因此索引也須要謹慎添加,那些字段須要索引。