1.索引的概念---索引是一種有效組合資料的方式,通過索引可以快速的查詢到資料庫物件表中的特定記錄。乙個索引會包含表中按照一定順序排序的一列或多列字段。由表中的乙個欄位或多個字段生成的鍵組成,這些鍵儲存在資料結構中(b-樹或雜湊表)。可將索引分為b型樹索引和雜湊索引。
mysql支援6種索引:普通索引、唯一索引、全文索引、單列索引、多列索引、空間索引。
2.索引的基本操作---包括建立、檢視和刪除。
建立和檢視索引——包括三種方法:建立表時建立索引、在已經存在的表中建立索引、通過sql語句alter table。
(1)建立普通索引:
普通索引:在建立索引時,不附加任何限制條件(唯
一、非空等)。該類索引可以建立在任何資料型別的字段上。
建立表時建立普通索引:create table table_name(屬性名 資料型別,屬性名 資料型別 ....屬性名 資料型別,index|key [索引名] (屬性名1 [(長度)])【asc|desc】);
例:create table t_dept(
deptno int,
dname varchar(20),
loc varchar(40),
index index_deptno(deptno));
在以存在的表中建立普通索引:create index 索引名 on 表名 (屬性名【(長度)】【aes|desc】);
通過sql語句建立普通索引:alter table table_name add index|key 索引名(屬性名【(長度)】【aes|desc】);
(2)建立唯一索引:
唯一索引:就是建立索引,限制索引的值必須唯一的。
建立表時建立唯一索引:create table table_name(屬性名 資料型別,屬性名 資料型別 ....屬性名 資料型別, unique index|key [索引名] (屬性名1 [(長度)])【asc|desc】);
例:create table t_dept(
deptno int unique,
dname varchar(20),
loc varchar(40),
unique index index_deptno(deptno)
);在以存在的表中建立唯一索引:create unique index 索引名 on 表名 (屬性名【(長度)】【aes|desc】);
通過sql語句建立唯一索引:alter table table_name add unique index|key 索引名(屬性名【(長度)】;
(3)建立全文索引
全文索引:主要關聯在資料型別為char、varchar和text的字段上,以便能夠更加快速的查詢資料量較大的字串型別字段。只能在儲存引擎為myisam的資料庫表上建立。
建立表時建立全文索引:create table table_name(屬性名 資料型別,屬性名 資料型別 ....屬性名 資料型別, fulltext index|key [索引名] (屬性名1 [(長度)])【asc|desc】);
例:create table t_dept(
deptno int,
dname varchar(20),
loc varchar(40),
fulltext index index_loc(loc)
) engine=myisam;
在以存在的表中建立全文索引:create fulltext index 索引名 on 表名 (屬性名【(長度)】【aes|desc】);
通過sql語句建立全文索引:alter table table_name add fulltext index|key 索引名(屬性名【(長度)】;
(4)建立多列索引
多列索引:在建立索引時,所關聯的字段不是乙個字段,而是多個字段。
建立表時建立多列索引:create table table_name(屬性名 資料型別,屬性名 資料型別 ....屬性名 資料型別, index|key [索引名] (屬性名1 [(長度)])【asc|desc】,....屬性名n [(長度)])【asc|desc】);
列:create table t_dept(
deptno int,
dname varchar(20),
loc varchar(40),
key index_dname_loc(dname,loc));
在以存在的表中建立多列索引:create index 索引名 on 表名 (屬性名【(長度)】【aes|desc】,....
屬性名n [(長度)])【asc|desc】);
通過sql語句建立多列索引:alter table table_name add fulltext index|key 索引名(屬性名【(長度),....
屬性名n [(長度)])【asc|desc】】;
刪除索引:drop index index_name on table_name;
Mysql 索引知識點
概述 之前寫過一篇mysql b 樹學習,簡單的介紹了b 數以及mysql使用b 樹的原因,有了這些基礎知識點,對mysql索引的型別以及索引使用的一些技巧,就比較容易理解了。覆蓋索引 建立了乙個輔助索引,如果能直接從這個輔助索引檔案中獲取到資料,而無需去訪問聚集索引 自增主鍵索引 檔案的話,那麼這...
mysql 操作知識點
update tpshop seller goods set sall numbe sall numbe 1 where goods id 162 返回值一直是0 原因是資料表中sall numbe,沒有預設值0,新增第乙個資料時是空,空加1為空。distinct select distinct a...
mysql索引優化知識點
想要了解索引的優化方式,必須要對索引的底層原理有所了解 索引的用處 索引的分類 面試技術名詞 索引採用的資料結構 索引匹配方式 create table staffs id int primary key auto increment,name varchar 24 not null default...