一、索引類型
- 普通索引
- 唯一索引
- 主鍵索引
- 組合索引
- 全文索引
查詢索引:show index from emp;
二、普通索引
是最基本的索引,它沒有任何限制。
在創建索引時,可以指定索引長度。length 為可選參數,表示索引的長度,只有字符串類型的字段才
能指定索引長度,如果是BLOB和TEXT類型,必須指定length。
創建索引時需要注意:如果指定單列索引長度,length 必須小於這個字段所允許的最大字符個數。
create table emp1(id int,name varchar(30),salary float(8,2),address varchar(50),index emp1_id_index(id(20)));創建表添加索引
create index emp_name_index on emp(last_name);創建索引
alter table emp add index emp_salary_index(salary);添加索引
drop index emp_name_index on emp;刪除索引
alter table emp drop index emp_index_i_n;刪除索引
三、唯一索引
唯一索引與普通索引類似,不同的就是索引列的值必須唯一,但允許有空值。
create table emp1(id int,name varchar(30),salary float(8,2),addrees varchar(50),unique emp1_name_index(name));創建表時添加索引
create unique index emp_name_index on emp(last_name);創建索引
alter table emp add unique emp_name_index(last_name); 添加索引
四、主鍵索引
主鍵索引是一種特殊的唯一索引,一個表只能有一個主鍵,不允許有空值。一般是在建
表的時候同時創建主鍵索引。當存在主鍵約束時,系統自動添加主鍵索引。
alter table emp add primery key(id);創建主鍵約束即創建主鍵索引
alter table emp drop primary key; 刪除索引
五、組合索引
組合索引是指使用多個字段創建的索引,只有在查詢條件中使用了創建索引時的第-一個
字段,索引才會被使用(最左前綴原則)。
就是最左優先。
如:我們使用表中的name,address, salary 創建組合索引,那么想要組合索引生效,
我們只能使用如下組合:
name/ address/ salary
name/ address
name/
如果使用addrees/salarv 或者是salarv 則索引不會牛效。
create table emp1(id int,name varchar(30),salary float(8,2),addrees varchar(50),index emp_index_i_n(id,name));創建表時添加索引
create index emp_index_n_s on emp(last_name,salary);創建索引
alter table emp add index emp_index_i_n(emp_id,last_name); 添加索引
alter table emp drop foreign key dept_id_fk; 刪除約束
alter table emp drop index dept_id_fk; 刪除索引
六、全文索引
全文索引(FULLTEXT INDEX)主要用來查找文本中的關鍵字,而不是直接與索引中的值
相比較。FULLTEXT索引跟其它索引大不相同,它更像是一個搜索引擎,而不是簡單的where
語句的參數匹配。FULLTEXT 索引配合match against操作使用,而不是一-般的where語句
加like.
全文索引可以從CHAR、VARCHAR或TEXT列中作為CREATE TABLE語句的- -部分
被創建,或是隨后使用ALTER TABLE添加。不過切記對於大容量的數據表,生成全文索
引是一個非常消耗時間非常消耗硬盤空間的做法。
create table emp1(id text,fulltext emp1_id_fulltext(id));創建表時添加索引
create fulltext index emp_news_fullindex on emp(news);創建索引
alter table emp add (news text,fulltext emp_news_fullindex(news)); 添加索引
alter table emp drop index emp_news_fullindex; 刪除索引
drop index emp_news_fullindex on emp; 刪除索引
select * from emp8 where match(contr) against('hello');使用
alter table emp8 add fulltext index emp8_contr_fulltext1(contr) with parser ngram;使用NGRAM分詞
