mysql的索引初探(一)

2021-09-25 01:49:43 字數 2575 閱讀 1725

mysql的索引初探(一):

索引的用處:在資料量比較大的情況下索引可以加快資料得查詢速度

索引的缺點:在資料庫中大量的使用索引會影響表的效能,索引也會大量占用儲存空間,構建過多的索引就會對錶的insert、update、delete操作會降低效率。

索引的型別:

主鍵索引,唯一索引,普通索引,全文索引,組合索引

主鍵索引就是由主鍵primariy key 修飾的字段,主鍵索引不允許重複,不允許為空

唯一索引是由關鍵字 unique index關鍵字進行修飾,唯一索引是可以為空但必須唯一

普通索引是普通的列構建的索引,由關鍵字index修飾,普通索引沒有限制

組合索引是由多個列組合構建的索引,多列所組成的字段不允許為空

全文索引用大文字物件的列構建的索引

索引使用的情況:

通常一點說當欄位經常使用的時候就可以建立索引,簡單一點說就是where欄位後的條件

檢視表的索引:

show index from tablename;

建立索引的方式有三種:建立表時建立索引,單獨建立索引,修改表建立索引

單獨建立索引:

-- 建立普通索引:

create index  t_studentbasic_stu_num  on  t_studentbasic(stu_num);

-- 建立唯一索引

create unique index t_studentbasic_stu_num  on  t_studentbasic(stu_num);

-- 建立全文索引

create fulltext index t_studentbasic_stu_num  on  t_studentbasic(stu_num);

-- 建立組合索引

create index t_studentbasic_stu_name on t_studentbasic(stu_num,stu_name);

-- 刪除索引

drop index t_studentbasic_stu_num on t_studentbasic;

-- 建立表時建立索引

drop table if exists `t_login1`;

create table `t_login1`  (

`stu_name` varchar(255) character set utf8 collate utf8_general_ci not null,

`stu_num` varchar(12) character set utf8 collate utf8_general_ci not null,

`stu_pwd` varchar(16) character set utf8 collate utf8_general_ci not null,

`login_type` varchar(11) character set utf8 collate utf8_general_ci not null,

unique index stu_num (stu_num(12)),  -- 建立唯一索引

primary key (`stu_num`),                  -- 建立主鍵索引

index (`stu_num`,stu_pwd),                    -- 建立組合索引

fulltext(stu_num),                                     -- 建立全文索引

index(stu_num)                                             -- 建立普通索引

) engine = innodb auto_increment = 7 character set = utf8 collate = utf8_general_ci row_format = dynamic;

--  修改表時建立索引

-- 建立普通索引

alter table t_login1 add index t_studentbasic_stu_num(stu_num);

-- 建立組合索引

alter table t_login1 add index t_studentbasic_stu_num(stu_num,stu_pwd);

-- 建立唯一索引

alter table t_login1 add unique index t_studentbasic_stu_num(stu_num);

-- 建立主鍵索引

alter table t_login1 add primary key t_studentbasic_stu_num(stu_num);

-- 建立全文索引

alter table t_login1 add fulltext index t_studentbasic_stu_num(stu_num);

-- 查詢索引使用情況

explain select * from t_login1 where stu_num='123';

那麼我們需要在什麼情況下建立索引呢?一般來說,在where和join**現的列需要建立索引,但也不完全如此,因為mysql只對<,<=,=,>,>=,between,in,以及某些時候的like才會使用索引

索引的初探(一)

以前聽做dba的朋友說索引能解決資料庫百分之八十的問題,我也開始簡單的寫幾篇關於索引的隨筆,順便來總結一下我理解的索引以及相關的知識,畢竟進步在於總結。簡介 索引是資料庫中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。我的理解就像是一本書,沒有目錄你也可以正常閱讀,但是想要直接去讀某個章節...

索引初探(二)

在sqlserver中分為兩種索引,一是聚集索引 一是費聚集索引。下面我就分別對兩種索引進行介紹並分析其區別和各自的特點。1.聚集索引 之前看過乙個比方,我覺得非常恰當這裡也用這個例子來說明兩種索引。我們的字典本身就像是乙個聚集索引,我們根據拼音查詢目錄,然後直接可以找到查詢字的頁,而字典正文就是按...

MongoDB初探 細說索引

一 索引操作 索引是為了優化查詢速度而生,mongodb的索引和其他關係型資料庫,比如mysql,oracle等的索引幾乎相同,對於它們的索引優化經驗同樣適用於mongodb。1 建立索引 mongodb中建立索引是通過ensureindex操作完成的。下面測試了在使用索引和不使用索引下的效能差別,...