MySQL創建索引


一、索引類型

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

查詢索引: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分詞


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM