為什麽要創建索引?
這是因為創建索引可以大大提高系統的性能。
首先,通過創建唯壹索引,可以保證數據庫表中每壹行數據的唯壹性。
第二,可以大大加快數據的檢索速度,這也是創建索引的主要原因。
第三,它可以加快表之間的連接,這在實現數據的引用完整性方面特別有意義。
第四,使用分組排序子句進行數據檢索時,還可以顯著減少查詢中分組排序的時間。
第五,通過使用索引,我們可以在查詢過程中使用優化隱藏設備來提高系統的性能。
有些人可能會問:添加索引有這麽多好處,為什麽不為表中的每壹列創建壹個索引呢?這種想法是合理的,但也是片面的。盡管索引有很多優點,但是將索引添加到表中的每壹列是非常不明智的。
這是因為增加指數也有許多缺點:
首先,創建和維護索引需要時間,隨著數據量的增加而增加。
第二,索引需要占用物理空間。除了數據表占用數據空間,每個索引還占用壹定的物理空間。如果要建立聚集索引,需要更多的空間。
再次,在添加、刪除、修改表中數據時,索引也要動態維護,降低了數據維護的速度。
哪些字段適合創建索引:
索引建立在數據庫表的某些列上。因此,在創建索引時,應該仔細考慮哪些列可以編制索引,哪些列不能編制索引。
通常,您應該在這些列上創建索引,例如:
壹是可以在需要經常搜索的欄目上加快搜索速度;
第二,在作為主鍵的列上,強制列的唯壹性和組織表中數據的排列結構;
第三,在經常用於連接的列中,這些列主要是外鍵,可以加快連接速度;
第四,在經常需要按範圍搜索的列上創建索引,因為索引已經排序,其指定的範圍是連續的;
第五,在需要經常排序的列上創建索引,因為索引已經排序了,這樣查詢就可以利用索引的排序來加快排序查詢時間;
第六,對WHERE子句中經常使用的列創建索引,以加快條件的判斷。
壹般索引是根據select的where條件建立的,比如select的條件是where f1和f2,那麽我們在字段f1或者字段f2中索引簡歷是沒有用的,只有同時在字段f1和f2中建立索引才有用。
哪些字段不適合創建索引:
同樣,不應該為某些列創建索引。壹般來說,這些不應被索引的列具有以下特征:
首先,不應該為查詢中很少使用或引用的列創建索引。這是因為,由於這些列很少使用,所以它們被索引或不被索引。
它並沒有提高查詢速度。相反,由於索引的增加,降低了系統的維護速度,增加了空間需求。
其次,索引不應該添加到數據值很少的列中。這是因為這些列的值很少,例如人員表中的性別列。
在查詢結果中,結果集中的數據行占表中數據行的比例很大,即表中需要搜索的數據行比例很大。
增加索引並不能明顯加快檢索速度。
第三,不應將索引添加到定義為text、p_w_picpath和bit數據類型的列中。這是因為這些列中的數據量要麽相當大,要麽值很少。
第四,當修改性能遠大於檢索性能時,不應創建引用。這是因為修改性能和檢索性能是矛盾的。
當索引增加時,檢索性能會提高,但修改性能會降低。索引降低時,修改性能會提高,檢索性能會降低。
因此,當修改性能遠遠大於檢索性能時,不應創建索引。
如何創建索引:
1,創建索引,比如對table_name(列的列表)創建索引;
2.修改表,如alter table table_name add index[(列的列表));
3.創建表時指定索引,例如create table table _ name ([...],index[索引的名稱](列的列表);
如何查看表中的索引:
顯示table_name的索引;查看索引
索引類型和創建示例:
1.主鍵(主鍵索引)
mysql & gtalter table table_name添加主鍵(` column `)
2.唯壹或唯壹鍵(唯壹索引)
mysql & gtalter table table _ name add unique(` column `)
3.全文(全文索引)
mysql & gtalter table table _ name add full text(` column `)
4.索引(壹般索引)
mysql & gtalter table table _ name add index index _ name(` column `)
5.多列索引(聚集索引)
mysql & gtalter table ` table _ name ` add index index _ name(` column 1 `,` column2 `,` column3 `)
要修改表中的索引:
alter table tablename刪除主鍵,添加主鍵(fileda,filedb)