索引的概念:
索引是一種特殊的檔案,他們包含著對資料表裡面所有記錄的引用指標,它是對資料庫庫表中一列或多列的值進行排序的一種結構。簡單來說資料庫索引就是一本書前面的目錄,能夠加快對資料庫的查詢速度,資料庫索引就是為了提高表的搜尋效率而對某些欄位的值建立目錄。
為什麼要建立索引?
1:建立索引的目的就是加快對錶中記錄查詢或排序,
2:建立索引可以大大提高系統效能
3:通過建立唯一索引,可以保證資料庫表中每一行資料的唯一性。
4:可以大大加快資料的檢索速度,這也是建立索引的最主要的原因
6:在使用分組和排序子句進行資料檢索時,同樣可以減少查詢中分組和排序的時間
7:通過使用索引,可以在查詢過程中,使用優化器,提高系統效能
索引的型別
普通索引:這是最基本的索引,他沒有任何限制。索引分單列索引和多列索引
單列索引即乙個索引只包含單個列,乙個表可以有多個單列索引
他又以下幾種建立方式
建立索引關鍵字:index
1:建立索引語法
create index 索引名 on 表名 (表中的列名)
檢視索引語法show index from 表名
其他建立單列索引方法:
建立表時建立索引的語法
最後刪除單行索引的語法
alter table 表名 index 索引名
多列索引:多列索引也稱組合索引,即乙個索引包括多個列,建立多列索引與建立單列索引方式幾乎相同只是建立單列索引時括號致謝了乙個列,建立多列索引,在括號中寫入多個列,列於列之間用逗號隔開。
多列索引的使用規範:
1:如果使用多列索引,where條件欄位的順序非常重要,需要滿足最左字首列
最左字首列:查詢條件中的所有字段需要從最左邊起按順序出現在多列索引中,需要按照最左索引列查詢,不能跳過中間列,查詢條件的字段要小於等於多列索引字段數,中間字段不能出現範圍查詢字段(
唯一索引:它與前面的普通索引類似,不同就是:索引列的值必須是唯一,但允許源頭空值,如果是組合索引,則列值的組合必須唯一。
建立唯一索引語法:
create unique index 索引名 on 表名 (列名)
主鍵索引:他是一種特殊的唯一的索引,不允許有空值。為表自定義主鍵將自動建立主鍵索引。主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每乙個值都唯一。
建立方法:
全文索引:這個索引不常用,所以不做多介紹
select 新增語句:
insert into 表名(列名列表) select 列名列表 from 表名
為什麼不對錶中每乙個列建立乙個索引?
因為增加索引也有許多不利的方面
1:建立索引和維護索引要耗費時間,這種時間是隨著資料量的增加而增加的。
2:索引需要占用物理空間,出來資料表占用空間之外,每乙個索引嗨喲占用一定的物理空間
3:當對表中的資料進行增加,刪除,和修改的時候,索引也要動態的維護,這樣降低了資料的維護速度
在這些列上建立索引或許用處較大:
1:在經常需要搜尋的列上,可以加快搜尋的速度。
2,在作為主鍵的列上。強制該列的唯一性和組織表中資料的排列結構
3:在經常用在連線的列上,這些列主要是一些外來鍵,可以加快連線的速度
4:在經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍時連續的
5,在經常需要排序的列上建立索引,這樣可以利用索引的排序,加快排序查詢時間
6:在經常時用where子句的列上建立索引,加快條件的判斷速度
不因該在這些列上建立索引:
2,對於那些只有很少資料值的列也不應該建立索引
3:對於那些為text,image,和bit資料型別的列不應該楚建立索引
4:當修改效能遠遠大於檢索效能時,不應該建立索引。
資料庫高階特性
觸發器模板 create trigger trigger name trigger time trigger event on table name for each row trigger statementtrigger name 是觸發器的名字 trigger time 是觸發時間選項 bef...
資料庫的高階SQL特性
一 約束 1 唯一約束 唯一約束用來保證乙個列中的資料唯一,他們和主鍵的區別是 2 檢查約束 檢查約束用來保證乙個列中的資料滿足一組指定的條件,常見用途是 以下對order表施加了乙個檢查約束,保證所有物品的數量大於0 create table order 二 索引 資料庫表的主鍵總是排序的,我們可...
MySQL 資料庫索引與事務的特性
索引的概念 索引是資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的性查詢他或她,則與在表中搜尋的所有行相比,索引有助於更快的獲取資訊。索引的乙個主要的目的就是加快檢索表中資料的方法,也是盡快的找到符合限制條件的記錄id的輔助資料結構 優點 通過建...