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操作完成的。下面測試了在使用索引和不使用索引下的效能差別,...