索引的使用及注意事項

2021-07-10 04:34:19 字數 1148 閱讀 6837

索引是資料庫對原始資料的一列或多列進行排序的一種結構,分為聚集索引和非聚集索引。聚集索引就像書的目錄一樣,排序結構和原表的一致;而非聚集索引就像字典的偏旁查詢一樣,排序順序和字典的不一樣,只是指出它在哪一頁。

索引又分為單列索引和聯合索引,單列索引很容易理解,就是對某一列進行排序。聯合索引就是對多列排序,第一列為優先列,即優先按照這列排序,相同時再按下一列排序。

優點:我們建索引肯定是有目的的,目的就是為了更快的查詢。對於索引的查詢為什麼比全表查詢快呢?

索引的資料量比全表的少,需掃瞄的資料也就少。

索引對欄位已經排序,可以進行二分法查詢。

缺點:索引也不是越多越好的。如果我們對每一列都建立索引,那麼需要的額外儲存空間將加大,對於插入、更新等操作的速度將降低,因為這些操作都要維護索引,每插入一條,那麼需要在每個索引都插入一條,這樣效率就降低了。

結論:所謂錢要花在刀刃上,索引也不例外,只對經常查詢的字段建索引,不建無用的索引。由於索引降低插入操作速度,因此:

查詢少,插入頻繁的或字段資料範圍小的(如:性別):不建索引

查詢多,插入也多:看需求(客戶查詢,員工插入,那麼客戶至上,當然速度慢讓員工來忍受了)

(相關**基於sqlite)

1.建立單列索引

create index index_name on tablename(columnname asc);
2.建立聯合索引

create index index_name on tablename(columnname1 asc,columnname2 desc);
3.刪除索引

drop indexnmae;
4.重建索引

reindex tablename;

reindex indexname1,indexname2;

ps:為了健壯性考慮可以加上if not exists等語句

作者注:以上皆是本人總結,若有錯誤遺漏之處,歡迎指出,共同討論。

2016/2/27 10:32:58

索引使用注意事項

1.索引不會包含有 null 值的列只要列中包含有 null 值都將不會被包含在索引中,復合索引中只要有一列含有 null 值,那麼這一列對於此復合索引就是無效的。所以我們在資料庫設計時不要讓字段的預設值為 null 應該用 0 乙個特殊的值或者乙個空串代替空值。2.復合索引 比如有一條語句是這樣的...

使用索引注意事項

新增dept 資料 create procedure insert dept in start int 10 in max num int 10 begin declare i int default 0 set autocommit 0 repeat set i i 1 insert into d...

mysql索引 使用注意事項

索引使用缺點 雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行insert,update和delete。因為更新表時,mysql不僅要儲存資料,還要儲存一下索引檔案 建立索引會占用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在要給大表上建了多種組合索引,索引檔案會膨脹很寬 ...